如何编写nopCommerce插件
原文鏈接http://www.cnblogs.com/dingsea/archive/2012/03/05/2381062.html
插件(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.在項目菜單(如Nop.Plugin.DiscountRules.CustomerRoles),點擊屬性
b.選擇生成選項卡
c.點擊輸出路徑旁邊的瀏覽按鈕選擇一個輸入目錄
ps:在debug和release模式下都要做此步驟。
?
?3.下一步你就要為你的每一個插件建立一個Description.txt,此文件包含描述插件的信息。你可以從其它插件目錄中拷出來。比如Nop.Plugin.DiscountRules.CustomerRoles插件的Description.txt就有如下內容:
其實所有的信息你都能看懂,不過有一些注意事項。
SystemName必須唯一。
Version字段是你插件的版本號,你可以將它設置為你喜歡的任何值。
SupportedVersions可以包含一個由逗號分隔的(確保nopCommerce當前版本包含在此列表中,否則此插件沒戲)支持版本清單。
FileName是用這個格式:Nop.Plugin.{Group}.{Name}.dll(是你插件的assembly文件名)。
要確保此文件的“復制到輸出目錄”屬性是“如果較新則復制”
?
4.所需的最后一個步驟是創建一個類實現IPlugin接口(Nop.Core.Plugins命名空間)。nopCommerce有 BasePlugin類已經實現了一些IPlugin方法,這樣你就不用苦逼地再寫一遍。
nopCommerce還提供一些從IPlugin派生特定的接口。例如,“IPaymentMethod”接口,用于創建新的付款插件,它包含了一些特定的用于付款的方法如ProcessPayment()或 GetAdditionalHandlingFee()。
?
nopCommerce3.3目前有以下的插件接口(不全):
IExternalAuthenticationMethod. 用來建立外部認證方法如 Facebook, Twitter, OpenID, etc.
IWidgetPlugin. 讓你可以創建小部件,小部件在你網站的某些地方出現,如左邊的Live chat框
IExchangeRateProvider. 用于獲得貨幣匯率.
IDiscountRequirementRule. 允許你創建新的折扣規則比如”帳單寄到的國家必須是……“
IPaymentMethod. 用于處理支付流程的插件。
IShippingRateComputationMethod.這些插件是用于獲取可用的配送方法和正確的運費。例如,UPS,UPS,FEDEX等。
ITaxProvider. 稅率提供商用于獲取稅率。
?
處理請求。控制器,模型和視圖。
我們現在需要做 的是創建一個控制器,模型和視圖。
????? 1、MVC控制器負責響應對一個ASP.NET MVC網站的請求。每個瀏覽器請求被映射到一個特定的控制器。
????? 2、一個視圖包含被發送到瀏覽器的HTML標記和內容。視圖是相當于一個ASP.NET MVC應用程序的頁面。
????? 3、一個MVC模型包含視圖或控制器以外的所有應用程序邏輯。
那么,我們可以開工了:
創建模型。新插件中加入一個Models文件夾,然后按你需要新加入一個模型類。
創建視圖。在插件項目中新加一個Views文件夾,再在里邊添加一個{Name}文件夾,此處{Name}是指你的插件名。然后再添加一個Configure.cshtml文件。
很重要的一點:此視圖應該要注明是嵌入資源。如下圖:
創建控制器。在插件項目中新加一個controller文件夾,再新加一個控制器類。
最好的命名辦法是像{Group} {Name}Controller.cs這樣如DiscountRulesCustomerRolesController。
在控制器里再好好地命名一個action方法用于配置。名字一般叫“Configure”。在configure方法里準備一個模型類并將其傳給這個視圖:Nop.Plugin.{Group}.{Name}.Views.? {Group}{Name}.Configure,即那個嵌入視圖。
提示一:從其它插件項目中拷貝web.config到你項目里來,這樣在做視圖的時候有智能感知。智能感知即微軟的自動完成亮點。
提示二:搞定以上步驟最簡單的辦法是直接把其它插件項目拷貝過來,然后文件和文件夾改名。
提示三:如果你想限制后臺(店主)控制器的一些action方法,只用在方法上加[AdminAuthorize]屬性即可。
提示四:接下來要確保所有第三方的程序集引用的“拷貝到本地”屬性設為false,這樣可以減小部署包的大小。
比如DiscountRules.CustomerRoles插件的項目結構會如下圖:
?
路由
現在我們要為插件注冊相應的路由。ASP.NET路由用于把瀏覽器發送的請求映射成MVC控制器相應的action方法,接下來的步驟你會讀到很多詳細關于路由的信息。
1.? 新建文件:RouteProvider.cs,它會向nopcommerce告知關于插件路由信息。比如下邊的RouteProvider添加了一個 新的路由,可以通過瀏覽器路徑http://www.yourStore.com/Plugins/DiscountRulesCustomerRoles/Configure來訪問:
?2.? 一些特寫的插件接口(像上邊講的)和“IMiscPlugin”接口有一個方法“GetConfigurationRoute”。它應該向控制器返回一個 用于插件后臺配置的路由。實現你插件的“GetConfigurationRoute”方法,可以告知nopCommerce你插件的后臺配置路由是什 么。如果你插件不需要后臺配置,那么此方法將返回NULL,比如下邊這樣:
public?void?GetConfigurationRoute(out?string?actionName,?out?string?controllerName,?out?RouteValueDictionary?routeValues){actionName?=?null;controllerName?=?null;routeValues?=?null;}只要你有這個配置方法,插件安裝以后你就能在Admin > Configuration > Plugins找到一個配置鏈接。(其實,我不知道這句話是什么意思。。。。)
處理“安裝”和“卸載”方法
這是可選步驟。一些插件需要有一定的安裝邏輯,比如插件要添加一些本地資源數據。在你的IPlugin實現中(大多數情況下是直接從BasePlugin類繼承下來),重載以下方法:
1. Install:在插件安裝時會調用此方法,你可以在此初始化任何設置,添加新的本地資源數據或添加新的數據庫表(如果需要的話)
2.Uninstall:在卸載插件時會調用此方法。
重要說明:如果你重載這些方法,不要隱藏基類的實現。比如重載”Install”的時候要記得調用base.Install(),
Tax.FixedRate的install方法如下:
public?override?void?Install(){//localesthis.AddOrUpdatePluginLocaleResource("Plugins.Tax.FixedRate.Fields.TaxCategoryName",?"Tax?category");this.AddOrUpdatePluginLocaleResource("Plugins.Tax.FixedRate.Fields.Rate",?"Rate");base.Install();}提示:已安裝的插件列表可以在\App_Data\InstalledPlugins.txt找到,這個列表是在安裝的時候創建的。
升級nopCommerce可能會讓插件掛掉
一些插件可能在新版本的nopCommerce中掛掉無法工作。如果在升級后有問題,請刪除插件再到nopCommerce官網看看是否有些版本的 插件下載。大部分的插件作者都會把他們的插件升級到新的版本,不過少數插件并不會跟隨著一起升級從而不再支持新版本。不過大多數情況下,你可以打開相應的? Description.txt文件并編輯SupportedVersions字段。
?
The end.
?
??
?
轉載于:https://www.cnblogs.com/jingshihaisu/p/3741166.html
總結
以上是生活随笔為你收集整理的如何编写nopCommerce插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDOI 2006 - 保安站岗
- 下一篇: JBOSS尝鲜