اموزش ساخت سایت مپ به صورت اتوماتیک در asp.net core
سلام دوستان
site map نقش کلیدی در سئو وب سایت دارد به طوری که خزنده موتور جستجو اول از همه وارد سایت مپ می شود
در سایت مپ شما وظیفه دارید لینک های مهم وب سایت خود را قرار دهید
مانند لینک مقالات و یا صفحه های اصلی
ساخت سایت مپ دستی کار زمان گیری می باشد پس بنده تصمیم گرفتم به شما آموزش دهم که چطور به صورت اتوماتیک سایت مپ بسازید
(خودم از این روش در وب سایت فارس لرن استفاده کردم)
اجزا یک سایت مپ
تگ loc که درون تگ Url قرار گرفته است حاوی آدرس صفحه مطلب (یا محصول و یا صفحات استتیک) شما می باشد.
تگ lastmo تاریخ آخرین دستکاری (که در اولین بار تاریخ ثبت مطلب می باشد) را مشخص میکند.
تگ changefreq دوره تغییر مطلب را مشخص می کند (این صفحه هر چند وقت یک بار ویرایش می شود؟)
تک priority اهمیت این صفحه را مشخص می کند که عددی بین 0 تا 1 را شامل می شود.
ساخت ویو مدل سایت مپ
using System;
namespace Project.ViewModels
{
public class SiteMapUrl
{
public string Url { get; set; }
public DateTime? Modified { get; set; }
public ChangeFrequency? ChangeFrequency { get; set; }
public double? Priority { get; set; }
}
public enum ChangeFrequency
{
Always,
Hourly,
Daily,
Weekly,
Monthly,
Yearly,
Never
}
}
ساخت کلاس سازنده سایت مپ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using Project.ViewModels;
namespace Project.Helpers
{
public class SiteMapBuilder
{
private readonly XNamespace NS = "http://www.sitemaps.org/schemas/sitemap/0.9";
private List<SiteMapUrl> _urls;
public SiteMapBuilder()
{
_urls = new List<SiteMapUrl>();
}
#region Sitemap Generator
public void AddUrl(string url, DateTime? modified = null, ChangeFrequency? changeFrequency = null, double? priority = null)
{
_urls.Add(new SiteMapUrl()
{
Url = url,
Modified = modified,
ChangeFrequency = changeFrequency,
Priority = priority,
});
}
public override string ToString()
{
var sitemap = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement(NS + "urlset",
from item in _urls
select CreateItemElement(item)
));
return sitemap.ToString();
}
private XElement CreateItemElement(SiteMapUrl url)
{
XElement itemElement = new XElement(NS + "url", new XElement(NS + "loc", url.Url));
if (url.Modified.HasValue)
{
itemElement.Add(new XElement(NS + "lastmod", url.Modified.Value.ToString("yyyy-MM-ddTHH:mm:ss.f") + "+00:00"));
}
if (url.ChangeFrequency.HasValue)
{
itemElement.Add(new XElement(NS + "changefreq", url.ChangeFrequency.Value.ToString().ToLower()));
}
if (url.Priority.HasValue)
{
itemElement.Add(new XElement(NS + "priority", url.Priority.Value.ToString("N1")));
}
return itemElement;
}
#endregion
}
}
استفاده از کد هایی که تاحالا نوشتیم و
ساخت سایت مپ اتوماتیک
private readonly ApplicationDbContext _db;
public SiteMapController(ApplicationDbContext db)
{
_db = db;
}
[Route("/sitemap.xml")]
public async Task<ActionResult> Index()
{
// list of items to add
var posts = await _db.Posts.ToListAsync();
var siteMapBuilder = new SiteMapBuilder();
// add the blog posts to the sitemap
foreach (var post in posts)
{
siteMapBuilder.AddUrl("http://sadin.ir/Articles/Article/" + post.PostAddress, modified: post.CreatedAt, changeFrequency: null, priority: 1.0);
}
// generate the sitemap xml
string xml = siteMapBuilder.ToString();
return Content(xml, "text/xml");
}
در کد بالا به ازای هر مقاله یک لینک در فایل sitemap.xml ساخته شده است
پایان.