如何写nopCommerce插件

如何写nopCommerce插件,第1张

如何编写

nopCommerce

插件

插件(

Plug-in

,又叫

addin

add-in

addon

add-on

)是一种电脑程序,通

过和应用程序的互动,用来替应用程序增加一些所需要的特定的功能。

(Wikipedia)

插件用来扩展

nopCommerce

的功能,

nopcommcer

有多种类型的插件。比如支付

方式中的

paypal

税率供应商,

配送计算方式

UPS,USP,Fedex

小部件

live

chat

功能)

等等。

nopCommerce

本身也自带了很多不同的插件。

你可以在官网上

搜索是否已经有人上传了满足你需要的插件。

如果没有,

哥这就手把手带你编写

一个出来。

插件结构,所用文件,所在位置

1.

你第一件事就是要在解决方案中新建一个“类库”项目。

最好的办法是把插件

都放在解决方案根目录(不过小心不要和

Nop.Web

下边的

plugins

目录搞混了,

那儿是放已布置插件的),而且最好把插件也都放在解决方案目录的

plugin

录中(关于更多解决方案文件夹的信息,请

猛击此处

最好以这种方法来命名:

”Nop.Plugin.{Group}.{Name}”。

{Group}

是你插件的

分类(比如支付),

{Name}

是你的插件名(比如”AuthorizeNet”),那么

Authorize.NET

的支付插件就会有这样的名字:

Nop.Plugin.Payments.AuthorizeNet

2.

一旦建立了插件项目,把输入路径改

为”..

\..\Presentation\Nop.Web\Plugins\{Group}.{Name}\

”,比如

Authorize.NET

支付插件就会有这样的输入路径

:

“..

\..\Presentation\Nop.Web\Plugins\Payments.AuthorizeNet\

”。搞定以

后,对应的插件

DLL

就会被拷贝到

\Presentation\Nop.Web\Plugins\

文件夹,

nopCommerce

内核会搜索此文件夹。

a.

在项目菜单,点击属性

b.

选择生成选项卡

c.

点击输入路径旁边的浏览按钮选择一个输入目录

你要在

debug

release

模式下都要做此步骤。

3.

下一步你就要为你的每一个插件建立一个

Description.txt

此文件包含描述

插件的信息。

你可以从其它插件目录中拷出来。

比如

Authorize.NET

支付插件的

Description.txt

就有如下内容:

Group: Payment methods

FriendlyName: Credit Card

SystemName: Payments.AuthorizeNet

Version: 1.00

SupportedVersions: 2.30

Author: nopCommerce team

DisplayOrder: 1

FileName: Nop.Plugin.Payments.AuthorizeNet.dll

其实所有的信息你都能看懂,不过有一些注意事项。

SystemName

必须唯一。

Version

字段是你插件的版本号,你可以将它设置为你喜欢的任何值。

SupportedVersions

可以包含一个由逗号分隔的

(确保

nopCommerce

当前版本包

含在此列表中,否则此插件没戏)支持版本清单。

FileName

是用这个格式:

Nop.Plugin.{Group}.{Name}.dll

(是你插件的

assembly

文件名)

要确保此文

件的“拷贝到输入目录”属性是“Copy if newer”

4.

所需的最后一个步骤是创建一个类实现

IPlugin

接口(

Nop.Core.Plugins

名空间)。

nopCommerce

BasePlugin

类已经实现了一些

IPlugin

方法,这样

你就不用苦逼地再写一遍。

nopCommerce

还提供一些从

IPlugin

派生特定的接口。

例如,

俺们有“IPaymentMethod”接口,

用于创建新的付款插件,

它包含了一些

特定的用于付款的方法如

ProcessPayment

()

GetAdditionalHandlingFee

()

nopCommerce

目前有以下特定的插件接口:

IExternalAuthenticationMethod.

用来建立外部认证方法如

Facebook,

Twitter, OpenID, etc.

IWidgetPlugin.

让你可以创建小部件,小部件在你网站的某些地方出现,如左

边的

Live chat

IExchangeRateProvider.

用于获得货币汇率

.

IDiscountRequirementRule.

允许你创建新的折扣规则比如”帐单寄到的国家

必须是„„“

ISMSProvider.

短信提供商,让你可以在下单时收到短信通知。

IPaymentMethod.

用于处理支付流程的插件。

IPromotionFeed.

这些插件用于向

Froogle

PriceGrabber

提供产品信息

IShippingRateComputationMethod..

这些插件是用于获取可用的配送方法和正

确的运费。例如,

UPS

UPS

FEDEX

等。

ITaxProvider.

税率提供商用于获取税率。

处理请求。控制器,模型和视图

现在你可以在

Admin area >Configuration >Plugins

看到我们的插件了,不

过正如你所想,

这个杯具的插件啥都不能做,

甚至连个配置的界面都没有。

现在

让我们来创建一个配置页面。

我们现在需要做的是创建一个控制器,

模型和视图。

1.

MVC

控制器负责响应对一个

ASP.NET

MVC

网站的请求。每个浏览器请求被

映射到一个特定的控制器。

2.

一个视图包含被发送到浏览器的

HTML

标记和内容。视图是相当于一个

ASP.NET MVC

应用程序的页面。

3.

一个

MVC

模型包含视图或控制器以外的所有应用程序逻辑。

关于

MVC

模式在

这里

你可以找到更多的信息。

那么,我们可以开工了:

创建模型。

新插件中加入一个

Models

文件夹,

然后按你需要新加入一个模型类。

创建视图。

在插件项目中新加一个

Views

文件夹,

再在里边添加一个

{Name}

文件

夹,此处

{Name}

是指你的插件名。然后再添加一个

Configure.cshtml

文件。很

重要的一点:此视图应该要注明是嵌入资源。

创建控制器。

在插件项目中新加一个

controller

文件夹,

再新加一个控制器类。

最好的命名办法是像

{Group}{Name}Controller.cs

这样如

PaymentAuthorizeNetController

再好好地命名一个

action

方法用于配置。

叫它“Configure”。准备一个模型类并将其传给这个视图:

Nop.Plugin.{Group}.{Name}.Views.

{Group}{Name}.Configure

即那个嵌入视

图。比如你在

Authorize.NET

支付插件中的

PaymentAuthorizeNetController

实现你就会比较清楚。

提示一:从其它插件项目中拷贝

web.config

到你项目里来,这样在做视图的时

候有智能感知(老丁:啊?真的么?这和拷文件有什么关系?)。智能感知即微

软的自动完成亮点。

提示二:

搞定以上步骤最简单的办法是直接把其它插件项目拷贝过来,

然后文件

和文件夹改名。

提示三:如果你想限制后台(店主)控制器的一些

action

方法,只用在方法上

[AdminAuthorize]

属性即可。

提示四:接下来要确保所有第三方的程序集引用的“拷贝到本地”属性设为

false

,这样可以减小部署包的大小。

比如

Authorize.NET

插件的项目结构会如下图:

路由

现在我们要为插件注册相应的路由。

ASP.NET

路由用于把浏览器发送的请求映射

MVC

控制器相应的

action

方法,接下来的步骤你会读到很多详细关于路由的

信息。

1.

新建如下文件:

RouteProvider.cs

,它会向

nopcommerce

告知关于插件路由

信息。比如下边的

RouteProvider

添加了一个新的路由,可以通过浏览器路径

http://www.yourStore.com/Plugins/PaymentAuthorizeNet/Configure

来访

问:

public partial class RouteProvider : IRouteProvider

{

public void RegisterRoutes(RouteCollection routes)

{

routes.MapRoute("Plugin.Payments.AuthorizeNet.Configure",

"Plugins/PaymentAuthorizeNet/Configure",

new { controller = "PaymentAuthorizeNet", action =

"Configure" },

nopcommerce使用数量无限。nopCommerce允许用户向其商店中添加无限数量的产品,随着产品数量和网站规模的壮大,其对网站整体性能的负面影响也就逐渐显现。nopcommerce是国外的一个高质量的开源B2C网站系统,最新版4.3基于EntityFrameworkCore和.NETCore3.1,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的,基于xml的多语言版本,非常灵活的语言切换功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11229154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存