8. 九月 2012 01:41
/
wcf
/
解决方案
/
评论 (0)
nopcommerce插件机制是相当优秀的,所以就分析一下然后拿来所用,集成到自己的网站架构里。写篇小文记录一下。不足和错误之处还望指正,nop版本2.5
1.Nop.Core.Plugins核心文件夹
文件目录:
这里面是Plugins的基类文件夹,实现插件机制的核心部分。
IPluginFinder.cs接口:
获取插件的信息接口,在ioc里的Nop.Web.Framework.DependencyRegistrar注册此接口。
系统启动的时候会加载到内存里。
//pluginsbuilder.RegisterType<PluginFinder>().As<IPluginFinder>().InstancePerHttpRequest();
IPlugin.cs:
插件的操作接口,主要有设置插件的属性信息,安装插件接口,卸载插件接口。
BasePlugins.cs 实现IPlugin.cs的方法。
PluginDescriptor.cs 插件的实体类,包含了插件的版本、描述,类型,文件名称,作者,等等一系列状态。
PluginFileParser。cs 包含对插件的实体操作方法,主要是写入插件的描述信息。
PluginFinder.cs 加载所有的插件,并获取它们的信息.
PluginManager.cs 插件管理的主类,看里面的注释,它的插件机制应该是参考的Umbraco这个cms的。
2.自定义插件
在这里我演示一个空的插件,本来是写抓取程序的,时间关系,没有做 了。插件名称,Nop.Plugin.Crawler
第一步:新建一个类库项目,而不是mvc应用项目。
第二步:在你的项目里添加需要的文件夹和文件:
Controllers,必选,控制器
Models,可选,如果你的项目很简单的话。
Views,可选但是一般情况下都需要有个界面的,放razor模板的.
Description.txt,这个必须要,插件的版本描述信息。内容如下
Group: CrawlerFriendlyName:CrawlerSystemName: Nop.Plugin.CrawlerVersion: 1.00SupportedVersions: 2.50Author: nopCommerce teamDisplayOrder: 1FileName: Nop.Plugin.Crawler.dll
在它上面点右键设置属性,如下图
Notes.txt ,这个是插件的备注信息,描述了插件的文件位置和一些注意事项。
RouteProvider.cs,路由文件,继承自Nop.Web.Framework.Mvc.Routes.IRouteProvider
View Code
using System.Web.Mvc; using System.Web.Routing; using Nop.Web.Framework.Mvc.Routes; namespace Nop.Plugin.Crawler { public partial class RouteProvider : IRouteProvider { public void RegisterRoutes(RouteCollection routes) { routes.MapRoute("Nop.Plugin.Crawler", "Plugins/Crawler/Index", new { controller = "Crawler", action = "Index" }, new[] { "Nop.Plugin.Crawler.Controllers" } ); } public int Priority { get { return 0; } } } }
web.config,.net配置文件。
CrawlerController.cs 在我的控制器里定义了一个返回简单页面的方法。
using System.Web.Mvc; using Nop.Web.Framework.Controllers; namespace Nop.Plugin.Crawler.Controllers { [AdminAuthorize] public class CrawlerController : Controller { public ActionResult Index() { return View("Nop.Plugin.Crawler.Views.Index"); } } }
大家注意了,返回的View里的view路径是插件里的视图路径,在view的Index.cshtml点右键设置的属性,cshtml是编译到dll里的
还有整个插件的属性,在插件项目上点右键设置输出属性
最后设置引用进来的dll文件属性。这样输出dll文件的时候不会把其他乱七八糟的文件也拷贝过来了。
在插件上点右键生只输出这三个文件
3.最后一步在Nop.Web的InstalledPlugins.txt里添加插件
插件名称不能重复,可以自定义。这里我的取的名字和插件项目名称相同没什么特殊要求。
后台插件预览就可以看到了。
015591bf-b47d-4803-bf8e-d788a3a2e5ef|1|5.0|27604f05-86ad-47ef-9e05-950bb762570c
30. 五月 2012 13:50
/
wcf
/
教你一招 . 解决方案
/
评论 (0)
教你一招 - 如何给nopcommerce增加新闻类别模块。
[更多...]
8f0769ea-210e-464c-a41f-90de537359f7|6|4.0|27604f05-86ad-47ef-9e05-950bb762570c
29. 五月 2012 16:22
/
wcf
/
教你一招 . 解决方案
/
评论 (0)
nopcommerce教你一招系列之如何安装nopcommerce。
[更多...]
7e5354fc-3cdb-4f15-8dc7-c62585514b02|1|5.0|27604f05-86ad-47ef-9e05-950bb762570c
29. 五月 2012 15:02
/
wcf
/
教你一招 . 解决方案
/
评论 (0)
nopcommerce教你一招系列之如何使用主题。
[更多...]
bcba044e-927e-40dd-b870-87e765b6d63d|2|5.0|27604f05-86ad-47ef-9e05-950bb762570c
29. 五月 2012 13:32
/
wcf
/
教你一招 . 解决方案
/
评论 (0)
nopcommerce教你一招系列之如何使用中文包。
[更多...]
90c7819f-23ab-4f19-905a-f8cbd092c348|12|4.9|27604f05-86ad-47ef-9e05-950bb762570c
29. 五月 2012 11:47
/
wcf
/
解决方案
/
评论 (0)
如何在nopCommerce使用主题模板(2.0以下版本)
[更多...]
cc16effa-bb21-43d8-888e-fe3cc2b7e71b|1|4.0|27604f05-86ad-47ef-9e05-950bb762570c
27. 五月 2012 18:18
/
wcf
/
语言包
/
评论 (0)
nopcommerce2.5中文包下载
[更多...]
8c784aba-1ca8-4dc3-80fc-0b7db4a4c2e3|1|5.0|27604f05-86ad-47ef-9e05-950bb762570c
26. 五月 2012 14:17
/
wcf
/
架构
/
评论 (0)
为nopcommerce自定义用户积分功能
[更多...]
fb3e5608-bb93-4c42-820f-f94cd57c5488|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
25. 五月 2012 21:15
/
wcf
/
架构
/
评论 (0)
为nopcommerce自定义用户积分功能
[更多...]
7e0a69f6-f10f-4979-874c-de03484af7ce|1|5.0|27604f05-86ad-47ef-9e05-950bb762570c
24. 五月 2012 14:14
/
wcf
/
架构
/
评论 (0)
nopCommerce常见问题汇总
[更多...]
9b10267a-3b51-4eea-ac3d-47747c1b82a9|2|5.0|27604f05-86ad-47ef-9e05-950bb762570c