Sitemizi arama motorları belli aralıklarla tarar ve yeni eklenen içerikleri indexler. Veya siz bir site haritası oluşturursunuz ve bunu arama motoruna gösterirsiniz. Bunun için xml formatında bir site haritası oluşturmanız gerekmektedir. Ama burada bir sorun karşımıza çıkıyor. Sitemizin içeriği dinamik olduğu yani belli aralıklarla değiştiği için her seferinde manuel olarak yeni bir xml dosyası oluşturmamız gerekir. Bunun yerine bunu otomatik olarak gerçekleştirmemiz gerekiyor. Sitemizin içeriği değiştiğinde veritabanından yeni bilgileri çekip bunu xml formatında yazdırabiliriz. Aslında yapacağımız işlem çok basit. Veritabanından çektiğimiz bilgileri string builder ile xml formatında oluşturduktan sonra bunu ekrana yazdıracağız.
public static string SiteMapXML()
{
mhmtyylcEntities _entity = new mhmtyylcEntities();
StringBuilder strBuilder = new StringBuilder();
strBuilder.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
strBuilder.AppendLine("<urlset xmlns=\"https://www.sitemaps.org/schemas/sitemap/0.9\">");
#region HomePage
strBuilder.AppendLine("<url>");
strBuilder.AppendLine("<loc>");
//Ana sayfamızın linki sabit olduğundan kendimiz ekledik.
string URL = String.Format("https://mhmtyylc.tr");
strBuilder.AppendLine(URL);
strBuilder.AppendLine("</loc>");
strBuilder.AppendLine("<changefreq>");
strBuilder.AppendLine("always");
strBuilder.AppendLine("</changefreq>");
strBuilder.AppendLine("<priority>");
strBuilder.AppendLine("1");
strBuilder.AppendLine("</priority>");
strBuilder.AppendLine("</url>");
#endregion
#region Categories
//Veratabanından kategorileri getiriyoruz.
var categories = _entity.Categories.ToList();
//foreach ile kategoriler içinde dönüyoruz.
foreach (var item in categories)
{
strBuilder.AppendLine("<url>");
strBuilder.AppendLine("<loc>");
string CatURL = item.URL;
//burada gelen kategorinin linkini oluşturuyoruz.
URL = "https://mhmtyylc.tr/category/" + CatURL;
strBuilder.AppendLine(URL);
strBuilder.AppendLine("</loc>");
strBuilder.AppendLine("<changefreq>");
strBuilder.AppendLine("weekly");
strBuilder.AppendLine("</changefreq>");
strBuilder.AppendLine("<priority>");
strBuilder.AppendLine("0.5");
strBuilder.AppendLine("</priority>");
strBuilder.AppendLine("</url>");
}
#endregion
#region Articles
//Aynı şekilde makalelerimizi veritabanından çekiyoruz.
var articles = _entity.Articles.ToList();
//Makaleleler içinde foreach ile dönüyoruz.
foreach (var item in articles)
{
strBuilder.AppendLine("<url>");
strBuilder.AppendLine("<loc>");
string ArtURL = item.URL;
//Makale linkini site haritasına ekliyoruz.
URL = "https://mhmtyylc.tr/" + ArtURL;
strBuilder.AppendLine("</loc>");
strBuilder.AppendLine("<changefreq>");
strBuilder.AppendLine("weekly");
strBuilder.AppendLine("</changefreq>");
strBuilder.AppendLine("<priority>");
strBuilder.AppendLine("0.5");
strBuilder.AppendLine("</priority>");
strBuilder.AppendLine("</url>");
}
#endregion
strBuilder.AppendLine("</urlset>");
//oluşturduğumuz string ifadeyi geri döndürüyoruz.
return strBuilder.ToString();
}Site haritasını oluşturduktan sonra View da bunu yazdırmamız gerekiyor.
public ViewResult SiteMap()
{
Response.ContentType = "text/xml";
Response.Write(Business.SiteMapXML()); //Oluşturdumuz metodu burada yazdırıyoruz.
Response.End();
return View();
}İşlemimiz tamamlandı. Artık sitemizin içeriği değiştidiğinde site haritamız dinamik olarak oluşturulacak. Kolay gelsin.

YORUMLAR (13)