ساخت Rss برای سایت و یا وبلاگ

پنجشنبه 16 اردیبهشت 1395

RSS نوعی از اسناد XML است که برای به اشتراک گذاشتن یا استفاده از مطالب جدید يک سايت طراحی شده‌است.در این مقاله به صورت عملی نحوه ساخت یک rss برای سایت را توضیح خواهیم داد .

ساخت Rss برای سایت و یا وبلاگ

همان طور که میدانید Rss ابزاری است که با کمک آن دیگر نیازی ندارید که هر روز سایت های مورد علاقه تان را تک به تک با ز کنید و ببینید که آیا مطلب جدیدی در آنها درج شده است یا نه !با کمک rss نیازی نیست که هر بار تمام سایت های مورد علاقه خود را لود کنید و در آنها به دنبال مطلب بگردید.در مرورگر قسمتی به نام Rss وجود دارد که می توانید لیست سایت های مورد علاقه خود را به آن اضافه کنید و با این کار اگر آن سایت ها مطلب جدیدی درج کنند به شما خبر داده خواهد شد .

RSS مخفف عبارت (Really Simple Syndication) است RSS .نوعی از اسناد XML است که برای به اشتراک گذاشتن یا استفاده از مطالب جدید يک سايت طراحی شده‌است.در این زمینه نرم افزارهایی هم تولید شده اند که کار را از این هم ساده تر می کنند . RSS Reader نرم افزارهایی برای خواندن rss هستند .

بعد از توضیح مقدمات قصد داریم که به صورت عملی یک rss و یک SiteMap برای سایت خود ایجاد کنیم .ابتدا یک پروژه از نوع Asp.net MVC ایجاد می کنیم .

ابتدا یک کلاسی برای ساختار اطلاعاتی که در Rss داریم ایجاد می کنیم .

  public class Article
    {
        public int Id { get; set; }

        public string ArticleTitle { get; set; }

        public string ArticleName { get; set; }

        public string description { get; set; }

        public Nullable<DateTime> Date { get; set; }
    }

در داخل برنامه یک کنترلر به نام xml ایجاد کرده و در داخل آن اکشن هایی را به منظور ایجاد و نمایش Rss می نویسیم .

  public class XMLController : Controller
    {
        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("Date", item.Date)

                  )
                )
              )
            );
            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<ArticleToXML> GetRssFeed()
        {
      
            Article item1 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName1", Date = DateTime.Now, Id = 1 };
            Article item2 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName2", Date = DateTime.Now, Id = 2 };
            Article item3 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName3", Date = DateTime.Now, Id = 3 };
            Article item4 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName4", Date = DateTime.Now, Id = 4 };
            List<Article> ArticlesFromDb=new List<Article>();
            ArticlesFromDb.Add(item1);
            ArticlesFromDb.Add(item2);
            ArticlesFromDb.Add(item3);
            ArticlesFromDb.Add(item4);
        


            #region چیزی که میخواهیم و از تایپیست که مناسب ایکس ام ال است

            List<ArticleToXML> sampleArticles = (from p in ArticlesFromDb
                select new ArticleToXML()
                {
                    description = p.description,
                    link = "http://" + Request.Url.Host+"/news/"+p.ArticleName, /*به کمک روش های مختلف میتوان آدرس را برای هر پست ایجاد کرد، در اینجا من از نام پست استفاده کردم*/
                    Date = p.Date,
                    title = p.ArticleTitle

                }).ToList();

            #endregion


            return sampleArticles;
        }

        public IEnumerable<ArticleToXML> GetLinks()
        {
            
            #region چیزی که در دیتابیس داریم و از تایپی مثل پست است
            Article item1 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName1", Date = DateTime.Now, Id = 1 };
            Article item2 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName2", Date = DateTime.Now, Id = 2 };
            Article item3 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName3", Date = DateTime.Now, Id = 3 };
            Article item4 = new Article() { description = "توضیحات خلاصه مطلب", ArticleName = "ArticleName4", Date = DateTime.Now, Id = 4 };
            List<Article> ArticlesFromDb = new List<Article>();
            ArticlesFromDb.Add(item1);
            ArticlesFromDb.Add(item2);
            ArticlesFromDb.Add(item3);
            ArticlesFromDb.Add(item4);
            #endregion

            //چیزی که در اینجا برای ما مهم است فقط لینک مطالب است
            #region چیزی که میخواهیم و از تایپیست که مناسب ایکس ام ال است

            List<ArticleToXML> sampleArticles = (from p in ArticlesFromDb
                                           select new ArticleToXML()
                                           {
                                               link = "http://" + Request.Url.Host + "/news/" + p.ArticleName, /*به کمک روش های مختلف میتوان آدرس را برای هر پست ایجاد کرد، در اینجا من از نام پست استفاده کردم*/

                                           }).ToList();

            #endregion
            return sampleArticle

Action با نام Rss از اطلاعات موجود یک فایل Xml ایجاد می کند . همانطور که گفته شد متد Rss برای ما ساختار فایل xml را ایجاد می کند برای اینکه در داخل این ساختار اطلاعات مربوط به سایت خود را داشته باشیم از متد GetRssFeed استفاده خواهیم کرد .در این متد ابتدا لیستی از اطلاعاتی که قرار است نمایش دهیم ایجاد خواهیم کرد سپس این لیست را به لیست ArticleToXml تبدیل می کنیم و در نهایت این لیست را return می کنیم .

تا به اینجای کار توانستیم برای سایت خود  rss ایجاد کنیم برای اینکه به این Rss که ایجاد کرده ایم دسترسی داشته باشیم کافی است که در داخل قسمت مسیریابی برنامه این مورد را اضافه کنیم .


            routes.MapRoute(
        "Sitemap", "sitemap",
        new { controller = "XML", action = "Sitemap" });
            routes.MapRoute(
              "RSS", "rss",
               new { controller = "XML", action = "RSS" });

در نهایت بعد از اجرای برنامه و زدن آدرسی شبیه این آدرس http://localhost:51614/rss به rss های خود دسترسی داشته باشیم .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید