در پردازش، یک پلاگین (یا افزونه) مجموعه ای از اجزای نرم افزاری است که توانایی های خاصی را برای برنامه نرم افزاری بزرگتر اضافه می کند. (ویکی پدیا)
پلاگین ها برای افزایش کارایی ناپ کامرس بکار می رود. ناپ کامرس دارای انواع مختلفی از پلاگین ها است. به عنوان مثال، روش های پرداخت (مانند PayPal)، ارائه دهندگان مالیات، روش های محاسبه روش حمل و نقل (مانند UPS، USP، FedEx)، ویجت ها (مانند بلوک چت زنده) و بسیاری دیگر. ناپ کامرس در حال حاضر با بسیاری از پلاگین های مختلف منتشر شده است. شما همچنین می توانید پلاگین های مختلف را در سایت رسمی ناپ کامرس جستجو کنید تا ببینید آیا کسی قبلا پلاگین ای را که نیازهای شما را برآورده میکند، ایجاد کرده است. اگر نه، این مقاله شما را در فرآیند ایجاد پلاگین خود هدایت خواهد کرد.
نام پیشنهادی برای یک پروژه پلاگین "Nop.Plugin {Group}. {Name}" است. {Group} گروه پلاگین شما (به عنوان مثال، «Payment» یا «Shipping») است. {Name} نام پلاگین شما (به عنوان مثال، "PayPalStandard") است. به عنوان مثال، پلاگین پرداخت استاندارد PayPal دارای نام زیر است: Nop.Plugin.Payments.PayPalStandard. اما لطفا توجه داشته باشید که این الزام نیست. و شما می توانید هر نامی برای پلاگین را انتخاب کنید. به عنوان مثال، "MyGreatPlugin".
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\Presentation\Nop.Web\Plugins\PLUGIN_OUTPUT_DIRECTORY</OutputPath>
<OutDir>$(OutputPath)</OutDir>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<!-- This target execute after "Build" target -->
<Target Name="NopTarget" AfterTargets="Build">
<!-- Delete unnecessary libraries from plugins path -->
<MSBuild Projects="$(MSBuildProjectDirectory)\..\..\Build\ClearPluginAssemblies.proj" Properties="PluginPath=$(MSBuildProjectDirectory)\$(OutDir)" Targets="NopClear" />
</Target>
</Project>
جایی که PLUGIN_OUTPUT_DIRECTORY باید با نام پلاگین جایگزین شود، به عنوان مثال، Payments.PayPalStandard.
ما این کار را به طریقی انجام می دهیم تا قادر به استفاده از یک رویکرد جدید برای اضافه کردن مراجع شخص ثالث که در هسته دات نت معرفی شده است، باشیم. اما در واقع لازم نیست. علاوه بر این، ارجاعات کتابخانه هایی که قبلا مشخص شده اند به طور خودکار بارگذاری می شوند. پس بسیار راحت است.
{
"Group":"Payment methods",
"FriendlyName": "PayPal Standard",
"SystemName": "Payments.PayPalStandard",
"Version": "1.49",
"SupportedVersions": [ "4.10" ],
"Author": "nopCommerce team",
"DisplayOrder": 1,
"FileName": "Nop.Plugin.Payments.PayPalStandard.dll",
"Description": "This plugin allows paying with PayPal Standard"
}
در واقع تمام زمینه ها خود توصیفی هستند، اما در اینجا نکاتی وجود دارد. فیلد SystemName باید منحصر به فرد باشد. بخش نسخه یک شماره نسخه افزونه است؛ شما می توانید آن را به هر مقدار که دوست دارید تنظیم کنید. فیلد SupportedVersions می تواند شامل لیستی از نسخه های پشتیبانی شده ناپ کامرس با استفاده از کاما باشد. (حاوی اطمینان از اینکه نسخه فعلی nopCommerce در این لیست گنجانده شده است، در غیر این صورت، آن بارگذاری نمی شود). فیلد FileName دارای فرمت زیر است: Nop.Plugin. {Group}. {Name} .dll (این نام فایل اسمبلی پلاگین شما است). اطمینان حاصل کنید که «کپی به دایرکتوری خروجی» از این فایل به «کپی اگر جدیدتر» تنظیم شده باشد.
اگر پلاگین شما برای هیچ یک از این رابط ها مناسب نیست، از رابط کاربری IMiscPlugin استفاده کنید.
Important note: پس از ساخت هر پروژه، قبل از انجام تغییرات، solution را پاک کنید. بعضی از منابع ذخیره می شوند و می توانند منجر به دردسر توسعه دهندگان شوند.
اکنون می توانید پلاگین را با رفتن به قسمت Admin area> Configuration> Plugins ببینید. اما همانطور که حدس زدید پلاگین ما هیچ کاری نمی کند. این افزونه حتی یک رابط کاربری برای تنظیم آن ندارد. اجازه دهید یک صفحه برای پیکربندی افزونه ایجاد کنیم.
اکنون ما باید یک کنترل کننده، یک مدل و یک نمایه ایجاد کنیم.
شما می توانید اطلاعات بیشتری در مورد الگوی MVC در اینجاپیدا کنید.
خب بیایید شروع کنیم:
[AuthorizeAdmin] - confirms access to the admin panel
[Area(AreaNames.Admin)] - specifies the area containing a controller or action
به عنوان مثال، پلاگین پرداخت PayPalStandard را باز کنید و به پیاده سازی آن از PaymentPayPalStandardController نگاه کنید.
سپس برای هر پلاگین که یک صفحه پیکربندی دارد، شما باید یک آدرس پیکربندی مشخص کنید. کلاس پایه به نام BasePlugin دارای روش GetConfigurationPageUrl است که یک آدرس پیکربندی را برمیگرداند:
return $"{_webHelper.GetStoreLocation()}Admin/ControllerName/ActionName";
جایی که ControllerName نام کنترل کننده شما است و ActionName نام عمل است (معمولا "Configure").
هنگامی که پلاگین خود را نصب کرده اید و روش پیکربندی را اضافه می کنید، یک لینک برای پیکربندی پلاگین خود را در قسمت Admin> Configuration> Plugins پیدا خواهید کرد.
نکته: ساده ترین راه برای تکمیل مراحل فوق، باز کردن هر پلاگین دیگری و کپی کردن این فایل ها به پروژه پلاگین شما است. سپس کلاس ها و دایرکتوری ها را تغییرنام دهید.
به عنوان مثال، ساختار پروژه پلاگین PayPalStandard شبیه تصویر زیر است:
این مرحله اختیاری است. بعضی از افزونه ها می توانند در هنگام نصب افزونه نیاز به منطق اضافی داشته باشند. به عنوان مثال، یک افزونه می تواند منابع محلی جدید را وارد کند. بنابراین پیاده سازی IPlugin خود را باز کنید (در بیشتر موارد از کلاس BasePlugin مشتق شده) و روش های زیر را بازنویسی کنید:
نکته مهم: اگر یکی از این روش ها را بازنویسی می کنید، پیاده سازی پایه خود را پنهان نکنید. به عنوان مثال، روش بازنویسی "Install" باید شامل روش زیر است: base.Install (). روش "نصب" پلاگین PayPalStandard مانند کد زیر است
public override void Install()
var settings = new PayPalStandardPaymentSettings()
UseSandbox = true
};
_settingService.SaveSetting(settings);
...
base.Install();
نکته: لیست پلاگین های نصب شده در \ App_Data \ installedPlugins.json قرار دارد. این لیست در طول نصب ایجاد می شود.
در اینجا ما نگاهی به نحوه ثبت مسیرهای افزونه ها خواهیم داشت. مسیریابی هسته ASP.NET مسئول نگاشت درخواست های مرورگر ورودی به اقدامات کنترل کننده MVC خاص است. شما می توانید اطلاعات بیشتری در مورد مسیریابی اینجا پیدا کنید. بنابراین مراحل بعدی را دنبال کنید:
<>b.public partial class RouteProvider : IRouteProvider
<>c. {
<>d. public void RegisterRoutes(IRouteBuilder routeBuilder)
routeBuilder.MapRoute("Plugin.Payments.PayPalStandard.PDTHandler", "Plugins/PaymentPayPalStandard/PDTHandler",
new { controller = "PaymentPayPalStandard", action = "PDTHandler" });
public int Priority
get
return -1;
برخی از افزونه ها ممکن است قدیمی شوند و دیگر با نسخه جدیدتر ناپ کامرس کار نخواهند کرد. اگر پس از ارتقاء به نسخه جدیدتر، در اجرای افزونه مشکل داشتید، پلاگین را حذف کنید و از وب سایت رسمی ناپ کامرس دیدن کنید تا ببینید آیا نسخه جدیدتر در دسترس است یا خیر. بسیاری از برنامه نویسان، پلاگین های خود را به نسخه جدید ارتقا می دهند، اما بعضی از آنها این کار را نمیکنند و نمیتوانند از پیشرفت های ناپ کامرس بهره مند شوند. اما در اغلب موارد، شما می توانید به سادگی یک فایل plugin.json مناسب را باز کنید و فیلد SupportedVersions را به روزرسانی کنید.
امیدوارم که این خودآموز شما را با ناپ کامرس بیشتر آشنا کرده باشد و آماده ساخت پلاگین های پیچیده تر شوید.
طراحی فروشگاه خود را با امکانات بیشمار و قالب اختصاصی به ما بسپارید. نمونه پروژه های اجرا شده ما را ببینید.
ناپ شاپ با برگزاری دوره های آموزشی در دانشگاهها، ارائه راهنمای فارسی، انجمن گفتگو، فیلم های آموشی، وبلاگ، طراحی انواع پلاگین ها و راه اندازی انواع فروشگاه اینترنتی، در توسعه ناپ کامرس در ایران تلاش میکند.