در پردازش، یک پلاگین (یا افزونه) مجموعه ای از اجزای نرم افزاری است که توانایی های خاصی را برای برنامه نرم افزاری بزرگتر اضافه می کند. (ویکی پدیا)
پلاگین ها برای افزایش کارایی ناپ کامرس بکار می رود. ناپ کامرس دارای انواع مختلفی از پلاگین ها است. به عنوان مثال، روش های پرداخت (مانند PayPal)، ارائه دهندگان مالیات، روش های محاسبه روش حمل و نقل (مانند UPS، USP، FedEx)، ویجت ها (مانند بلوک چت زنده) و بسیاری دیگر. ناپ کامرس در حال حاضر با بسیاری از پلاگین های مختلف منتشر شده است. شما همچنین می توانید پلاگین های مختلف را در سایت رسمی ناپ کامرس جستجو کنید تا ببینید آیا کسی قبلا پلاگین ای را که نیازهای شما را برآورده میکند، ایجاد کرده است. اگر نه، این مقاله شما را در فرآیند ایجاد پلاگین خود هدایت خواهد کرد.
نام پیشنهادی برای یک پروژه پلاگین "Nop.Plugin {Group}. {Name}" است. {Group} گروه پلاگین شما (به عنوان مثال، «Payment» یا «Shipping») است. {Name} نام پلاگین شما (به عنوان مثال، "PayPalStandard") است. به عنوان مثال، پلاگین پرداخت استاندارد PayPal دارای نام زیر است: Nop.Plugin.Payments.PayPalStandard. اما لطفا توجه داشته باشید که این الزام نیست. و شما می توانید هر نامی برای پلاگین را انتخاب کنید. به عنوان مثال، "MyGreatPlugin".
شما باید مراحل فوق را به تمام تنظیمات موجود ("Debug" و "Release") انجام دهید.
Group:Payment methods
FriendlyName: PayPal Standard
SystemName: Payments.PayPalStandard
Version: 1.28
SupportedVersions: 3.90
Author: nopCommerce team
DisplayOrder: 1
FileName: Nop.Plugin.Payments.PayPalStandard.dll
Description: This plugin allows paying with PayPal Standard
در واقع تمام زمینه ها خود توصیفی هستند، اما در اینجا برخی از نکات وجود دارد. فیلد SystemName باید منحصر به فرد باشد. بخش نسخه یک شماره نسخه برای افزونه است؛ شما می توانید آن را به هر مقدار که دوست دارید تنظیم کنید. فیلد SupportedVersions می تواند لیستی از نسخه های پشتیبانی شده nopCommerce را با استفاده از کاما در بربگیرد (اطمینان از اینکه نسخه فعلی nopCommerce در این لیست گنجانده شده است، در غیر این صورت، بارگذاری نمی شود). فیلد FileName دارای فرمت زیر است: Nop.Plugin. {Group}. {Name} .dll (این نام فایل اسمبلی پلاگین شما است). اطمینان حاصل کنید که «کپی به دایرکتوری خروجی» از این فایل به «کپی اگر جدیدتر موجود بود» تنظیم شده باشد.
اگر پلاگین شما برای هیچ یک از این رابط ها مناسب نیست، از رابط کاربری IMiscPlugin استفاده کنید.
Important note: پس از ساخت هر پروژه، قبل از انجام تغییرات، solution را پاک کنید. بعضی از منابع ذخیره می شوند و می توانند منجر به سختی کار برنامه نویسان شوند.
اکنون می توانید پلاگین را با رفتن به قسمت Admin area> Configuration> Plugins ببینید. اما همانطور که حدس زدید پلاگین ما هیچ کاری نمی کند. این افزونه حتی یک رابط کاربری برای تنظیم آن ندارد. اجازه دهید یک صفحه برای پیکربندی افزونه ایجاد کنیم. اکنون ما باید یک کنترل کننده، یک مدل و یک نمایه ایجاد کنیم.
شما می توانید اطلاعات بیشتری در مورد الگوی MVC در اینجاپیدا کنید.
خب بیایید شروع کنیم:
نکته 1: ساده ترین راه برای تکمیل مراحل فوق باز کردن هر پلاگین دیگری و کپی کردن این فایل ها به پروژه پلاگین شما است. سپس کلاس ها و دایرکتوری ها را تغییر دهید.
نکته 2: اگر می خواهید دسترسی به یک روش خاص کنترل کننده را به مدیران (صاحبان فروشگاه ها) محدود کنید، فقط ویژگی [AdminAuthorize] علامت گذاری کنید.
به عنوان مثال، ساختار پروژه پلاگین Authorize.NET شبیه تصویر زیر است
حالا ما باید مسیرهای مناسب پلاگین را ثبت کنیم. مسیریابی ASP.NET مسئول نگاشت درخواست های مرورگر ورودی به اقدامات کنترل کننده MVC است. شما می توانید اطلاعات بیشتری در مورد مسیریابی اینجا پیدا کنید. بنابراین مراحل بعدی را دنبال کنید:
<>b.public void GetConfigurationRoute(out string actionName,
<>c. out string controllerName,
<>d. out RouteValueDictionary routeValues)
<>e. {
<>f. actionName = "Configure";
<>g. controllerName = "PaymentAuthorizeNet";
<>h. routeValues = new RouteValueDictionary()
<>i. {
<>j. { "Namespaces", "Nop.Plugin.Payments.AuthorizeNet.Controllers" },
<>k. { "area", null }
<>l. };
<>m. }
<>o.public partial class RouteProvider : IRouteProvider
<>p. {
<>q. public void RegisterRoutes(RouteCollection routes)
<>r. {
<>s.t.<>u. routes.MapRoute("Plugin.Payments.PayPalStandard.PDTHandler",
<>v. "Plugins/PaymentPayPalStandard/PDTHandler",
<>w. new { controller = "PaymentPayPalStandard", action = "PDTHandler" },
<>x.
<>y. );
<>z.<>aa. }
<>bb. public int Priority
<>cc. {
<>dd. get
<>ee. {
<>ff. return 0;
<>gg. }
<>hh. }
<>ii. }
هنگامی که پلاگین خود را نصب کرده اید و روش پیکربندی را اضافه می کنید، یک لینک برای پیکربندی پلاگین خود را در قسمت Admin> Configuration> Plugins پیدا خواهید کرد.
این مرحله اختیاری است. بعضی از افزونه ها می توانند در هنگام نصب افزونه نیاز به منطق اضافی داشته باشند. به عنوان مثال، یک افزونه می تواند منابع محلی جدید را وارد کند. بنابراین پیاده سازی IPlugin خود را باز کنید (در بیشتر موارد از کلاس BasePlugin مشتق شده) و روش های زیر را بازنویسی کنید:
نکته مهم: اگر یکی از این روش ها را بازنویسی می کنید، پیاده سازی پایه خود را پنهان نکنید. به عنوان مثال، روش بازنویسی "Install" باید شامل روش زیر است: base.Install (). روش نصب «پلاگین Authorize.NET» مانند کد زیر به نظر می رسد
public override void Install()
{
var settings = new AuthorizeNetPaymentSettings()
UseSandbox = true,
TransactMode = TransactMode.Authorize,
TransactionKey = "123",
LoginId = "456"
};
_settingService.SaveSetting(settings);
base.Install();
}
نکته: لیست پلاگین های نصب شده در \ App_Data \ installedPlugins.json قرار دارد. این لیست در طول نصب ایجاد می شود.
برخی از افزونه ها ممکن است قدیمی شوند و دیگر با نسخه جدیدتر ناپ کامرس کار نخواهند کرد. اگر پس از ارتقاء به نسخه جدیدتر، در اجرای افزونه مشکل داشتید، پلاگین را حذف کنید و از وب سایت رسمی ناپ کامرس دیدن کنید تا ببینید آیا نسخه جدیدتر در دسترس است یا خیر. بسیاری از برنامه نویسان، پلاگین های خود را به نسخه جدید ارتقا می دهند، اما بعضی از آنها این کار را نمیکنند و نمیتوانند از پیشرفت های ناپ کامرس بهره مند شوند. اما در اغلب موارد، شما می توانید به سادگی یک فایل plugin.json مناسب را باز کنید و فیلد SupportedVersions را بهروزرسانی کنید.
امیدوارم که این خودآموز شما را با ناپ کامرس بیشتر آشنا کرده باشد و آماده ساخت پلاگین های پیچیده تر شوید.
طراحی فروشگاه خود را با امکانات بیشمار و قالب اختصاصی به ما بسپارید. نمونه پروژه های اجرا شده ما را ببینید.
ناپ شاپ با برگزاری دوره های آموزشی در دانشگاهها، ارائه راهنمای فارسی، انجمن گفتگو، فیلم های آموشی، وبلاگ، طراحی انواع پلاگین ها و راه اندازی انواع فروشگاه اینترنتی، در توسعه ناپ کامرس در ایران تلاش میکند.