روشی سریع برای ایجاد RSS و Sitemap در ASP.NET MVC
نویسنده: مرتضی دلیل
تاریخ: ۱۳۹۳/۰۴/۲۵ ۲۱:۲۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
در صورتیکه طراحی شما بر اساس MVC صورت گرفته است، در کمتر از چند دقیقه و در سه مرحله میتوانید پرونده Rss و Sitemap را برای همیشه ببندید.
پیش از تشریح مراحل، به ساختار این دو فایل توجه کنید.
مراحل کار :
مرحله 1. ایجاد نوع(Type) مورد نیاز برای ایجاد Xml های فوق
مرحله 2 . ایجاد کنترلر XML
مرحله 3. ایجاد مسیریابی(Routing)
مرحله 1 : ابتدا یک کلاس به منظور شکل دهی به اطلاعات، بر اساس خواستههای xml مرتبط با RSS و Sitemap تشکیل دهید:
public class PostToXml
{
public int PostId { get; set; }
public string title { get; set; }
public string link { get; set; }
public string description { get; set; }
public Nullable<DateTime> pubDate { get; set; }
} مرحله 2 : یک کنترلر به نام xml ایجاد کنید و اکشن متدهای زیر را درون آن قرار دهید :
public ContentResult RSS()
{
var items = GetRssFeed();
var rss = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
new XElement("rss",
new XAttribute("version", "2.0"),
new XElement("channel",
new XElement("title", "آخرین مطالب سایت"),
new XElement("link", "http://" + Request.Url.Host+"/rss"),
new XElement("description", "آخرین مطالب سایت من"),
new XElement("copyright","(c)" + DateTime.Now.Year + ", نام سایت من.تمامی حقوق محفوظ است"),
from item in items
select
new XElement("item",
new XElement("title", item.title),
new XElement("description", item.description),
new XElement("link", item.link),
new XElement("pubDate", item.pubDate)
)
)
)
);
return Content(rss.ToString(), "text/xml");
}
public ContentResult Sitemap()
{
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
var items = GetLinks();
var sitemap = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
new XElement(ns + "urlset",
from item in items
select
new XElement("url",
new XElement("loc", item.link),
new XElement("changefreq", "monthly"),
new XElement("priority", "0.5")
)
)
);
return Content(sitemap.ToString(), "text/xml");
}
public IEnumerable<PostToXml> GetRssFeed()
{
// یک کوئری که لیستی از تایپ مشخص شده به ما بدهد
}
public IEnumerable<PostToXml> GetLinks()
{
// یک کوئری که لیستی از تایپ مشخص شده به ما بدهد
} این کنترلر دارای دو اکشن متد Rss و Sitemap است و این اکشنها وظیفهی ایجاد فایلهای Xml را به عهده دارند. مواد اولیه این xml ها از دو متد GetRssFeed و GetLinks تهیه میشوند. ما این مواد را در تمپلیت Rss و Sitemap جایگذاری خواهیم کرد. (به کمک دو اکشن متد Rss و Sitemap )
کافیست لیستی از مواردی را که میخواهیم در Rss یا Sitemap ثبت شوند، تهیه کنیم. این لیست بر اساس شکل تنظیم دیتابیس و مسیریابی سایت، میتواند پیچیده و یا ساده باشد. (به کمک کوئری گرفتن با linq و یا اضافه کردن مستقیم آدرسها به لیست و یا ترکیبی از هر دو مورد) برای درک بهتر موضوع، لطفا تصویر موجود در ابتدای مقاله را مشاهده نمایید.
مرحله 3 : در مرحله آخر کافیست دو مورد زیر را به فایل RoutConfig.cs بیافزایید:
routes.MapRoute(
"Sitemap", "sitemap",
new { controller = "XML", action = "Sitemap" });
routes.MapRoute(
"RSS", "rss",
new { controller = "XML", action = "RSS" }); به کمک آدرسهای زیر میتوانید به آنچه که تهیه کردهاید دسترسی داشته باشید :
http://domain.com/rss http://domain.com/sitemap
فایل پروژه را دریافت کنید :
MVC_RSS_Sitemap-43ad3c6681734b34b91deaaabcdba871.rar
List<PostToXML> sampleposts = (from p in PostsFromDb
select new PostToXML()
{
description = p.description,
link = "http://" + Request.Url.Host+"/news/"+p.postname,
pubDate = p.pubDate,
title = p.title
}).ToList(); List<PostToXML> total = list1.Concat(list2);