Bu yazımdaarama motorları için ve SEO için vazgeçilmez olan SiteMap dosyası için yazdığım sınıfı sizlerle paylaşacağım.

Bu yazımda bloğumda kullandığım arama motorları için ve SEO için vazgeçilmez olan SiteMap dosyası için yazdığım sınıfı sizlerle paylaşacağım. Yazdığım sınıfta veriler alınıp gerekli yapıya sokularak Xml sonucu (string olarak) yazdığım metot ile alıp kullanabiliyoruz. Yazımda hem Asp.net ile hem de MVC ile yazdığım sınıfın kullanımını göstereceğim. Daha önce paylaştığım RSS sınıfı gibi bu sınıfı da projelerimize direk olarak ekleyip kullanabiliriz. Yine bu sınıfta Sitemap oluşturmak için Linq to Xml yöntemini kullanmaktayım. Umarım faydalı olur ve birçok kişi kullanır. Şimdi yazdığım sınıfa ve kullanımına bakalım.
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.IO;
using System.Xml;

namespace MehmetDuran
{
	public class SitemapItem
	{
		public string loc { get; set; }
		public DateTime lastmod { get; set; }
		public string changefreq { get; set; }
		public string priority { get; set; }
	}

	public class Sitemap
	{
		public List<SitemapItem> Veriler { get; set; }
		public Sitemap(List<SitemapItem> veriler)
		{
			this.Veriler = veriler;
		}
		public string SitemapSonuc()
		{
			XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
                        XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
			XNamespace schemaLocation = "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd";
			
			XDocument doc = new XDocument
			(
				new XDeclaration("1.0", "UTF-8", ""),
				new XElement(
					xmlns + "urlset", 
                                        new XAttribute(xsi + "schemaLocation", schemaLocation), 
                                        new XAttribute(XNamespace.Xmlns + "xsi", xsi)
				)
			);
			foreach (SitemapItem item in Veriler)
			{
				XElement i = new XElement
				(
					xmlns + "url",
					new XElement(xmlns + "loc", item.loc),
					new XElement(xmlns + "lastmod", item.lastmod.ToString("yyyy-MM-dd")),
					new XElement(xmlns + "changefreq", item.changefreq),
					new XElement(xmlns + "priority", item.priority)
				);
				doc.Root.Add(i);
			}
			MemoryStream ms = new MemoryStream();
			XmlWriter xw = XmlWriter.Create(ms, new XmlWriterSettings() { Indent = true });
			doc.Save(xw);
			xw.Close();
			return new System.Text.UTF8Encoding().GetString(ms.ToArray());
		}
	}
}

 

 Asp.net ile kullanıma bakalım. Bunun için aşağıdaki gibi bir kodlama yapmamız yeterli.

protected void Page_Load(object sender, EventArgs e)    
{      
	List<SitemapItem> veriler = new List<SitemapItem>()      
	{        
		new SitemapItem(){ loc = "http://mehmetduran.com", lastmod = DateTime.Now, changefreq = "daily", priority = "1" }        // Burada veritabanından alınan veriler ile sitemap oluşturulacak.      
	};      
	Sitemap sitemap = new Sitemap(veriler);      
	Response.Clear();      
	Response.ContentType = "text/xml";      
	Response.Write(sitemap.SitemapSonuc());    
}

 

MVC ile kullanım ise şöyle olmalı.

public ActionResult SiteMap()    
{      
	List<SitemapItem> veriler = new List<SitemapItem>()    
	{      
		// Burada veritabanından alınan veriler ile sitemap oluşturulacak.    
		new SitemapItem(){ loc = "http://mehmetduran.com", lastmod = DateTime.Now, changefreq = "daily", priority = "1" }      
	};      
	Sitemap sitemap = new Sitemap(veriler);      
	return Content(sitemap.SitemapSonuc(), "text/xml");    
}

Gerekli yerlerde ister el ile ister veritabanından alınan verilerle SiteMap'i rahatlıkla oluşturabilir ve kullanabiliriz.

Arama motorları, SEO için oldukça önemli olan Sitemap için yazdığım bu sınıfın oldukça kullanışlı olduğunu düşünüyorum. Umarım faydalı olur ve kullanılır.

İyi Çalışmalar.
 

İlgili Makaleler

Bu yazıya 0 yorum yapılmış.

Yorum Gönder