只寫104行代碼!在nopCommerce中如何實現自動生成網站地圖

表告訴我說你不知道nopCommerce是什麼。它是目前.NET中最流行的徹底開源網上商城,由俄羅斯的團隊在2008年開始立項一直開發到如今已是3.3版本了。代碼目前託管在codeplex上,有興趣的同窗能夠猛戳他們的codeplex站點 http://nopcommerce.codeplex.com/
 
目的和效果

你們造在目前的nopCommerce中已經有網站地圖的功能,當你請求以下地址時,http://www.nopchina.com/SitemapSeo會顯示XML的站點地圖,但有個問題,這個是實時顯示的。站點地圖其實不用實時,這個你懂的,因而咱們要作的是讓它定時生成一個靜態的XML文件就好,不須要實時生成以節約服務器資源。php

作好之後放到插件中以下:

如何實現web

製做一個nop插件,經過nopCommerce的計劃任務來實現定時生成。插件項目以下:服務器

代碼能夠在此下載:Sea.Plugin.Job.SitemapXML.zip,此處僅略爲描述主要功能:ide

插件安裝時向計劃任務添加一條記錄:網站

public override void Install()        {ui

            //install a schedule taskspa

            var task = FindScheduledTask();插件

            if (task == null)code

            {xml

                task = new ScheduleTask

                {

                    Name = "[SEA] sitemap.xml Generator",

                    //everyday

                    Seconds = 3600*24,

                    //Seconds = 60,//test

                    Type = "Sea.Plugin.Job.SitemapXML.SiteMapGenerationTask, Sea.Plugin.Job.SitemapXML",

                    Enabled = true,

                    StopOnError = false,

                };

                _scheduleTaskService.InsertTask(task);

            }

            SiteMapGenerationTask currentTask = new SiteMapGenerationTask(_sitemapGenerator,_webHelper);

            currentTask.Execute();

          base.Install();

        }

當時卸載的時候也要刪除乾淨:

public override void Uninstall()        {

            //remove the task

            var task = FindScheduledTask();

            if (task != null)

                _scheduleTaskService.DeleteTask(task);

          base.Uninstall();

}

在計劃任務的execute方法中,調用現有的SEO類生成地圖:

public void Execute()

        {

            string xml = _sitemapGenerator.Generate();

            string filePath = _webHelper.MapPath("~/sitemap.xml");

            File.WriteAllText(filePath, xml);

        }

來數數這兩個文件你要寫多少行代碼? :)

哦,別忘了把以前已有的Sitemap action給註釋掉:

//SEO sitemap page

[NopHttpsRequirement(SslRequirement.No)]

public ActionResult SitemapSeo()

{

if (!_commonSettings.SitemapEnabled)

return RedirectToRoute("HomePage");

 

//string siteMap = _sitemapGenerator.Generate();

//return Content(siteMap, "text/xml");

return Redirect("/sitemap.xml");

}

相關文章
相關標籤/搜索