Bir html sayfası hakkında bilgi içeren, özetini sunan, hangi temel sözcükler üzerinde durduğunu bildiren, sayfanın ne zaman ve kimin tarafından hazırlandığını gösteren etiketlere meta tag denilir. Bir sayfaya ait üst veriler olarak tanımlanan meta tag etiketleri, description, keywords, author, classification, copyright, robots gibi değerlerden oluşur. Aşağıda, bu sayfanın örnek meta tagları bulunmaktadır;
Meta tagları ziyaretçiler için deÄŸil daha çok arama motorlarının o sayfayı doÄŸru ve kolayca analiz etmesi için düzenleriz. SEO(Search engine optimization – Arama motoru optimizasyonu) uygulamalarında en önemli iÅŸlemlerinden biri de sitedeki sayfaların meta taglarının güncellenmesidir. Hazırladığımız site veya sayfaların arama motorları tarafından kolayca indekslenmesi ve aramalarda üst sıralarda çıkması için anahtar kelime ve ifadeleri doÄŸru yerde etkili kullanmamız gerekmektedir. Google’a spideri olan freshbot robotu, sayfanın güncellenme sıklığına göre sitemize gelip sitede herhangi bir güncellemenin olup olmadığını denetler(Google dance). Bu süre zarfında siteye yeni içeriklerin girilmesi hem sitenin hitini artıracak hem de search engineler tarafından yeniden indekslenmesi saÄŸlanacaktır. Bu güncellemeyi meta taglarından baÅŸlatmamız daha doÄŸru olacaktır. Fakat çoÄŸu zaman bu kısa sürede sayfanın meta taglarını güncelleme imkanı bulamadığımız için veya sayfayı güncelleyip ftp ile yeniden host sunucusuna göndermeye erindiÄŸimiz için bu iÅŸi dinamik hale getirmek daha kolay bir çözüm olacaktır. .NET 2.0 doÄŸrudan sayfanın meta taglarına eriÅŸmemize imkan verir. Framework 2.0′ta bulunan System.Web.UI.HtmlControls.HtmlHead sınıfı aracılığıyla o sayfanın header kontrollerine eriÅŸebiliriz. Yine aynı ÅŸekilde Page nesnesinin Title property’si aracılığıyla her sayfanın Title bilgisini de dinamikleÅŸtirebiliriz.
Bu dinamik bilgileri bir veritabanından okumak işi daha da kolaylaştıracaktır.
protected void Page_Load(object sender, EventArgs e)
{
string Keywords="Veritabanından gelen liste";
string Description = "Veritabanından gelen açıklama";
string Title = "Ahmet Kaymaz - Bu sayfaya özel başlık";
//Keywords için bir meta tag nesnesi oluşturalım.
HtmlMeta Meta = new HtmlMeta();
//Meta tag nesnesine name ve content niteliklerini ekleyelim
Meta.Attributes.Add("name", "keywords");
Meta.Attributes.Add("content", Keywords);
//Bu meta tagı sayfanın header listesine ekleyelim
Header.Controls.Add(Meta);
//Description için yeni bir meta tag nesnesi oluşturalım.
Meta = new HtmlMeta();
//Meta tag nesnesine name ve content niteliklerini ekleyelim
Meta.Attributes.Add("name", "description");
Meta.Attributes.Add("content", Description);
Header.Controls.Add(Meta);
//Sayfanın başlığını güncelle
Page.Title = Title;
}//Page_Load
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Keywords As String = "Veritabanından gelen liste"
Dim Description As String = "Veritabanından gelen açıklama"
Dim Title As String = "Ahmet Kaymaz - Bu sayfaya özel başlık"
'Keywords için bir meta tag nesnesi oluşturalım.
Dim Meta As HtmlMeta = New HtmlMeta()
'Meta tag nesnesine name ve content niteliklerini ekleyelim
Meta.Attributes.Add("name", "keywords")
Meta.Attributes.Add("content", Keywords)
'Bu meta tagı sayfanın header listesine ekleyelim
Header.Controls.Add(Meta)
'Description için yeni bir meta tag nesnesi oluşturalım.
Meta = New HtmlMeta()
'Meta tag nesnesine name ve content niteliklerini ekleyelim
Meta.Attributes.Add("name", "description")
Meta.Attributes.Add("content", Description)
Header.Controls.Add(Meta)
'Sayfanın başlığını güncelle
Page.Title = Title
End Sub
Bu işlemden sonra sayfanın meta bilgileri şu şekilde oluşmuş olacaktır.
Buradaki html kontrollerini kullanabilmek için System.Web.UI.HtmlControls sınıfını sayfaya import etmeyi unutmamalıyız.
Bu iÅŸi daha da geliÅŸtirerek sayfayı çağıran ziyaretçi, Googlebot(Google’ın arama robotu) ise ona özel title ve meta taglar sunabiliriz.




Aralık 9th, 2007 at 00:48
Hocam Allah(c.c.) razı olsun.Çok güzel bilgilendirme yazısı.Yalnız HtmlMeta() objesini sürekli oluşturmadan bir kere oluşturup seri halinde hepsini ekleyemezmiyiz.Örn:keywords için ayrı,description için ayrı değil de tek bir obje ve hepsini eklesin.Belki bir döngü ile olur gibi geliyo bana ama çok uğraşamadım vakit sıkıntısı nedeniyle bi sorayım dedim.Cevaplarsanız ne ala cevaplamazsanızda sağolun.
Aralık 10th, 2007 at 09:38
Necmi bey,
Bir meta tag elementi, bir HtmlMeta nesnesine denk geldiği için her meta tag elementi için nesneyi create etmek zorundasınız. Belki koleksiyon mantığıyla veya aşağıdaki gibi public bir metod tanımlayarak daha az satırla bu işi yapabilirsiniz.
public class GenelIslemler{ public static void MetaTagEkle(Page Sayfa, String Ad, String Aciklama){ HtmlMeta meta = new HtmlMeta(); meta.Name = Ad; meta.Content = Aciklama;, (HtmlHead)Sayfa.Header.Controls.Add(meta); } }Bu metodu, meta taglarını düzenlemek istediğimiz sayfanın Load() metodunda çağırmamız yeterli olacaktır.
Åžubat 7th, 2008 at 09:57
Merhaba, benim meta tagların dinemik yüklenmesi ile ilgili bir sorum olacaktı. Sayfanın title, keywords ve description biligilerini cs tarafında atadığım değişkenlerden şu şekilde alıyorum.
title>
meta name=”Description” content=”" />
meta name=”Keywords” content=”" />
meta tagları bu şekilde ayarlayınca kendi bilgisayarımda değerleri sayfa yüklendikten sonra sourceda alabiliyorum. Ancak siteyi servera yükleyip dışardan erişmeye çalıştığımda ise ne baslık bilgisi görünüyor ne de keyword ve description bilgileri. Bunların görünmesini nasıl sağlarım. Yardımcı olursanız sevinirim.
İyi Günler…
Åžubat 11th, 2008 at 23:28
Burcu Hanım,
bahsettiğiniz c# kodları bana ulaşmadı. Yeniden yazabilirseniz belki yardımcı olabilirim.
Nisan 3rd, 2008 at 17:56
Meta tag değilde mesela bir tabloya hücre eklemek istesem yada herhangi bir html tagini özellikle server taraflı çalışmayan tagları düzenlemek istesem nasıl yapabilirim?
Nisan 4th, 2008 at 07:55
İstemci tarafında HTML belgesi içinde herhangi bir düzenleme yapmak için VbScript, JavaScript gibi Client Side Script kullanmanız gerekir. ÖrneÄŸin sayfanın title’ni deÄŸiÅŸtirmek için
<script language="javascript">
document.title="C# örnekleri";
</script>
Aynı ÅŸekilde belgedeki Table, Tr, Td, a, span, div, img gibi html elementlerine eriÅŸmek için bu elementlerin ID bilgisi parametre alınarak "document.getElementById()" metodu kullanılabilir. Bu metodla elde edilmiÅŸ olan elementin property’leri(attribute’leri) kolaylıkla deÄŸiÅŸtirilebilir.
Temmuz 13th, 2008 at 19:59
Merhaba Ahmet Bey,
Öncelikle bu çok faydalı bilgiler için teşekkür ederim. Ancak kafama takılan bir noktayı sormak istiyorum. Asp.Net 2.0 la birlikte gelen masterPage sayfalarında bu işlemi nasıl yapabiliriz.
Bildiğiniz gibi masterPage sayfaları bir çok sayfaya giydirilmiş bir biçim gibi düşünülüp meta etiketleri bu alanda bulunuyor.
Temmuz 14th, 2008 at 08:30
Merhaba Osman Bey,
.aspx sayfalarının MasterPage içerisinde olmasının bir farkı yok. Nihayetinde bu sayfalar, MasterPage sınıcının altında bir kontrol olduÄŸu için ve ContentPlaceHolder bileÅŸeni içerisindeki sayfadan master page’e eriÅŸilebildiÄŸi için bir kontrolün property’si set edilir gibi meta taglar kolayca deÄŸiÅŸtirilebilir. Master Page’in genel prototipi aÅŸağıdaki gibidir.
<%@ Master Language="CS" %><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Bunun içerisine Urun.aspx sayfasını eklediÄŸimizi düÅŸünelim. Urun.aspx.cs dosyasından master.FindControl() yordamıyla ilgili alana eriÅŸilebilir. Fakat bu iÅŸin daha doÄŸru yöntemi olarak aÅŸağıdaki gibi bir satırla sayfanın Title alanı güncellenebilir. ASP.NET otomatik olarak master içerisinde de olsa o sayfanın baÅŸlığını deÄŸiÅŸtirir.
Page.Header.Title = "C# ile ilgili örnekler"
Ekim 2nd, 2008 at 08:28
merhaba, en son bahsettiğiniz konuya ek bir soru sormak istiyorum. master page içinde olan bir form elemanı kullanmak için master.FindControl() ile bir kopyasını alıp çalışabiliriz. en azından öyle görünüyor. peki masterpage de bulunan bir elemana contentte bulunan başka bir form elemanındaki bilgiyi yada .vb içinden bir bilgiyi nasıl gönderebiliriz?
yani: aynı masterpage’i kullanan 5 farklı aspx var diyelim. her birisi,kendisi çalıştığında masterpage de bulunan bir form elemanına bilgi göndermek için ne yapmalı. textbox örnek olabilir.
şimdiden teşekkürler.
Ekim 3rd, 2008 at 04:12
Merhaba Veysel Bey,
aslında istediğiniz şey önceki mesajda yazılmış. Eğer yanlış anlamadıysam alt sayfadan master sayfasındaki bir kontrole erişmek istiyorsunuz. Bunun için Master.FindControl() yordamını kullanmanız yeterlidir. Aynı şekilde eğer master sayfasından alt sayfadaki bir kontrole erişmek istiyorsanız master sayfasında ContentPlaceHolder1.FindControl() yordamını kullanabilirsiniz. Buradaki ContentPlaceHolder1 ifadesi, master page içerisinde alt sayfaların konulacağı yer tutucusunun adıdır. Örneği alt sayfadaki txtMusteri isimli bir TextBox kontrolünü set edelim.
((TextBox)ContentPlaceHolder1.FindControl(“txtMusteri”)).Text = “Müşteri Adı Ne Olsun”;
Bu arada yeri gelmiÅŸken söyleyelim, Önce master page içerisindeki kontroller oluÅŸur ardından alt sayfaki kontroller oluÅŸur. Daha sonra önce alt sayfanın Page_Load eventi tetiklenir ardından master page’in Page_Load eventi tetiklenir.
Ekim 10th, 2008 at 18:19
Hocam bu 3,5 da çalışmıyor.Acaba 3,5 için bir kod varmı?
Ekim 13th, 2008 at 02:07
Mahmut,
tam olarak hangi kodun çalışmadığını yazabilirsen daha iyi yardımcı olabilirim ama bu sayfada verilmiÅŸ kodların 3.5 için bir farklılığı olduÄŸunu sanmıyorum. Çünkü konuyla ilgili 3.5′ta herhangi bir deÄŸiÅŸiklik olmadı.
Åžubat 25th, 2009 at 09:22
Düz bir HTML sayfası yazıp HEAD içerisine META DATA’ları yazmakla, bir aspx sayfası oluÅŸturup, Master Page kullanıp META DATA’ları dinamik olarak oluÅŸtumanın google bot’u için bir farkı varmı? Veya farklı bot’ların sayfayı indexlemesi için bir fark teÅŸkil edermi?
T&eÅŸekkürler…
Åžubat 25th, 2009 at 12:18
Google gibi arama motorları kurallara göre yazılmış olan düz html sayfalarını daha kolay indekslemektedir. Metadata bilgisinin dinamik mi yoksa statik mi düzenlendiğini Google anlamayacağı sayfa güncellenmiş havası vermek için dinamik yapmanız daha faydalı olacaktır. Ama bu değişiklik yeterli olmayacaktır ayrıca sayfanın SEO kurallarına göre düzenlenmiş olması da önemlidir.
Åžubat 25th, 2009 at 13:51
SEO kurallarına göre düzenlenmiş den kasdedilen nedir? Search yaptım ve sitenizle konuyla ilgili bir makale bulamadım. Önerebileceğiniz mümkünse türkçe kayan var mı?
TeÅŸekkürler…
Åžubat 25th, 2009 at 13:58
SEO (Search Engine Optimization – Arama Motoru Optimizasyonu) ile ilgili seochat.com sitesini iyi bir kaynak olarak kullanabilirsiniz. Bu sitede google bot özelliklerini, pagerank belgelerini, keywork ile ilgili ipuçları bulabilirsiniz. Türkçe kaynak olarak Google’deki aramalarda denk gelmiÅŸtim. Onlar da sizin yararlı olabilir. SEO bu blogun konusu olmadığı için makale bulamamışsınızdır. Sadece ilgimi çeken bir konu olduÄŸu için sizin yönlendirmeye çalıştım.
Mart 13th, 2009 at 19:02
Merhabalar,
Öncelikler, bilgiler için teşekkür ederim. Aşağıdaki kodu denedim. Fakat, Türkçe karakterler bozuk geliyor. Sebebi nedir acaba? Bir de this.Master.Page.Title komutunu üste de koysam alta da koysam, title en altta geliyor.
Teşekkür ederim.
AddMetaTag(“keywords”, “ekincioglutoys.com, oyuncak, oyuncax, AhÅŸap EÄŸitici Ürünler, …”);
AddMetaTag(“description”, “ekincioglutoys.com EkincioÄŸlu Toys – Oyuncak Dünyası | Ekincioglu Toys – World of Kids”);
AddMetaTag(“author”, “Deltasoft.com.tr E-Ticaret Sitesi”);
AddMetaTag(“Robots”, “index, follow”);
AddMetaTag(“Language”, “TR”);
AddMetaTag(“verify-v1″, “1XAAiX59vqPQoCLaGlC+C2uHRyXauDxf4oedmXzjCGM=”);
this.Master.Page.Title = “Oyuncak Dünyası – ekincioglutoys.com”;
Mart 16th, 2009 at 13:45
Türkçe karakter sorununun birkaç nedeni olabilir. web.config içerisinde aşağıdaki satırları ve meta-tag bölümüne de <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> satırını yazdığınızda karakterler doğru kodlanmışsa sorun çıkmayacaktır.
<globalization
culture="tr-TR"
uiCulture="tr"
requestEncoding="iso-8859-9"
responseEncoding="iso-8859-9"/>
Title alanının nerede çıkacağı Master Page içerisindeki HEAD etiketi altındaki TITLE etiketine bağlıdır. Örneğin aşağıdaki ifadede title bilgisini set ettiğinizde diğer tagların üstünde görünür.
<head id="Head1" runat="server"><title>Untitled Page</title>
</head>
EÄŸer master page içerisinde HEAD » TITLE etiketi yoksa doÄŸal olarak sayfanın kontrollerini ekleyecek ardından Title gibi property’leri set edecektir.
Mayıs 20th, 2009 at 10:08
Hocam eline sağlık çok işime yaradı.
Temmuz 11th, 2009 at 16:50
Öncelikle yazınız için teÅŸekkürler, gerçekten faydalı bilgiler veriyorsunuz. Benim de yukarıda sorulanlara benzer bir sorunum var. MasterPage’de yazdığım meta taglarını bu MasterPage’i kullanan bir sayfada deÄŸiÅŸtirmek istedim ama “NullReferenceException” hatası alıyorum, oluÅŸturduÄŸum meta elementi boÅŸ görünüyor. Yardımcı olursanız sevinirim.
HtmlMeta meta = new HtmlMeta();
meta.Name = “keywords”;
meta.Content = anahtarkelimeler;
this.Header.Controls.Add(meta);
Temmuz 22nd, 2009 at 11:35
MasterPage içerisindeki head etiketinin runat=server özellikli olduğundan emin miyiz. Tam olarak hangi satırda hata veriyor.
Eylül 24th, 2010 at 19:55
meta tagları bir türlü satır başından başlamıyor..ne yapmam gerekiyor.