Lägga till meta data i master page

Så här kan man göra för att dynamiskt lägga in metataggar i masterpages. Då får man en centraliserad plats för att t ex läsa in nyckelorden från en databas.

//Lägg till nyckeord
string strKeywords = "nyckelord1, nyckelord2";
HtmlMeta metaKeywords = new HtmlMeta();
metaKeywords.Name="keywords";
metaKeywords.Content=strKeywords;
Page.Header.Controls.Add(metaKeywords);

//Lägg till beskrivning
string strDescription = "En beskrivning till din webbplats";
HtmlMeta metaDescription = new HtmlMeta();
metaDescription.Name="description";
metaDescription.Content=strDescription;
Page.Header.Controls.Add(metaDescription);

//Skriv ut datum
HtmlMeta metaDate = new HtmlMeta();
metaDate.Name="date";
metaDate.Content=DateTime.Now.ToString("yyyy-MM-dd");
metaDate.Scheme = "YYYY-MM-DD";
Page.Header.Controls.Add(metaDate);

//Exempel för vertifikation för Google tjänster
//Skriv ut google verifikation
HtmlMeta metaVerify = new HtmlMeta();
metaVerify.Name="verify-v1";
metaVerify.Content="JhpBMxYdMJ8ywzA+n5+CCKm+i9SwRUK+hyoxL7tR1Ho=";
Page.Header.Controls.Add(metaVerify);

//Lägg till meta data för hur robotar ska uppföra sig, ändra till "noindex,nofollow" på de som inte ska scannas
string strRobots = "index,follow";
HtmlMeta metaRobots = new HtmlMeta();
metaRobots.Name="robots";
metaRobots.Content=strRobots;
Page.Header.Controls.Add(metaRobots);

Uppdatering:
I exemplet ovan är själva datan hårdkodad. Tanken var att läsa värdena från en databas tabell. Ett annat sätt är att definiera dessa värden i web.sitemap filen. Här nedan är ett exempel för hur man kan läsa värdena.

Ett stort tack till Henrik Feldt på MGT Kompetens AB för bidraget med följande kodstycke.

SiteMapNode node = SiteMap.CurrentNode;
if (node != null)
{
System.Web.UI.Page page = sender as Page;
if (page != null)
{
HtmlMeta metatag;
if (!page.Header.ToString().Contains("name=\"description\""))
{
if (!String.IsNullOrEmpty(node.Description))
{
metatag = new HtmlMeta();
metatag.Name = "description";
metatag.Content = SiteMap.CurrentNode.Description;

page.Header.Controls.Add(metatag);
}
}
if (!page.Header.ToString().Contains("name=\"keywords\""))
{
string keywords = node["keywords"];
if (!String.IsNullOrEmpty(keywords))
{
metatag = new HtmlMeta();
metatag.Name = "keywords";
metatag.Content = keywords;

page.Header.Controls.Add(metatag);
}
}
}
}

Comments

Varför är det intressant att lägga till en robots tagg om den innehåller normalt beteende? Varför inte koppla det hela till web.sitemap istället?
Hej. Du har rätt, robotarna följer alla länkar som standard. I mitt exempel hämtar jag värdena från en databas. Vissa sidor vill jag inte att Google ska indexera så där lägger jag till noindex,nofollow som värde. På övriga säger jag till att de ska indexera. En web.sitemap är dock en bra ide, det är ju ett annat sätt att hålla reda på sina sidor.
Du har rätt, robotarna följer alla länkar som standardbeteende. I mitt exempel hämtar jag värdena från en databas. Vissa sidor vill jag inte att Google ska indexera så där lägger jag till noindex,nofollow som värde. På övriga säger jag till att de ska indexera. En web.sitemap är dock en bra ide, det är ju ett annat sätt att hålla reda på strukturen på webbplatsen. Men går det att ange alla metadata i web.sitemap?