只写104行代码!在nopCommerce中如何实现自动生成网站地图
2014-06-14 17:09
645 查看
表告诉我说你不知道nopCommerce是什么。它是目前.NET中最流行的完全开源网上商城,由俄罗斯的团队在2008年开始立项一直开发到现在已经是3.3版本了。代码目前托管在codeplex上,有兴趣的同学可以猛戳他们的codeplex站点http://nopcommerce.codeplex.com/。
目的和效果
大家造在目前的nopCommerce中已经有网站地图的功能,当你请求如下地址时,http://www.nopchina.com/SitemapSeo会显示XML的站点地图,但有个问题,这个是实时显示的。站点地图其实不用实时,这个你懂的,于是我们要做的是让它定时生成一个静态的XML文件就好,不需要实时生成以节约服务器资源。
做好以后放到插件中如下:
如何实现
制作一个nop插件,通过nopCommerce的计划任务来实现定时生成。插件项目如下:
代码可以在此下载:Sea.Plugin.Job.SitemapXML.zip,此处仅略为描述主要功能:
插件安装时向计划任务添加一条记录:
public override void Install() {
//install a schedule task
var task = FindScheduledTask();
if (task == null)
{
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");
}
目的和效果
大家造在目前的nopCommerce中已经有网站地图的功能,当你请求如下地址时,http://www.nopchina.com/SitemapSeo会显示XML的站点地图,但有个问题,这个是实时显示的。站点地图其实不用实时,这个你懂的,于是我们要做的是让它定时生成一个静态的XML文件就好,不需要实时生成以节约服务器资源。
做好以后放到插件中如下:
如何实现
制作一个nop插件,通过nopCommerce的计划任务来实现定时生成。插件项目如下:
代码可以在此下载:Sea.Plugin.Job.SitemapXML.zip,此处仅略为描述主要功能:
插件安装时向计划任务添加一条记录:
public override void Install() {
//install a schedule task
var task = FindScheduledTask();
if (task == null)
{
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");
}
相关文章推荐
- 章鱼哥—VB.NET 如何实现代码自动生成控件 添加绑定事件
- access如何用代码在“默认值”里实现自动编号?单据流水号生成问题。
- 如何实现自动生成在线播放代码?
- 如何让帝国CMS如何自动生成sitemap.xml网站地图文件
- 如何实现ASP上传图片自动生成缩略图
- 如何向Google、Yahoo!、MSN、Ask和百度提交在线生成的网站地图Sitemap
- [置顶] 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- QQ网站自动生成在线客服代码
- 如何高效地使用XCodeFactory自动生成的数据层代码(一)
- 如何在Eclipse中使用ibatis的自动代码生成工具Abator
- 如何实现ASP上传图片自动生成缩略图
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 如何实现网站根据ip判断地区 自动跳转到所属地区页面【PHP版】
- PHP定时自动生成静态HTML的实现代码
- 用自动生成代码实现数据的持久化
- 如何向Google、Yahoo!、MSN、Ask和百度提交在线生成的网站地图Sitemap
- Nuva 示例代码(每日一帖)之 生成网站地图
- 如何自动更新JTable中的数据(代码实现)
- 如何高效地使用XCodeFactory自动生成的数据层代码(二)
- 如何自动更新JTable中的数据(代码实现)