Створення плагінів для nopcommerce

nopCommerce - це open source движок, написаний на ASP.NET MVC 3, для електронної комерції. Модулі використовуються для розширення функціоналу nopCommerce. У nopCommerce існує кілька типів плагінів. Наприклад, платіжний модуль, провайдер розрахунку податків, провайдер розрахунку вартості доставки товарів і багато інших. nopCommerce поширюється з декількома вже існуючими плагінами, які ви можете як робочі приклади при розробці сових плагінів. До речі, ви можете знайти безліч різних плагінів на офіційному сайті nopCommerce. Якщо ж необхідного плагіна ви знайти не можете, то в цій статті ви дізнаєтеся про те, як написати свій плагін.

Перша річ, яку вам необхідно зробити це додати новий проект Class Library до основного солюшену. Правилом хорошого тону є збереження всіх плагінів в папці \ Plugins в корені солюшени (не плутати з підпапки \ Plugins, розміщеної в середині папки самого сайт \ Nop.Web і яка використовується для вже розроблених і скомпільованих плагінів).

Створення плагінів для nopcommerce

Хорошим ім'ям для плагіна буде "Nop.Plugin ..", де - це тип вашого плагіна (наприклад, "Payment"), а - це назва плагіна (наприклад, "Authorize.NET"). Наприклад, платіжний модуль для системи Authorize.NET матиме наступне ім'я "Nop.Plugin.Payment.AuthorizeNet"

Як тільки проект плагіна (Class Library) доданий треба встановити правильний output path. Встановіть його в ".. \ .. \ Presentation \ Nop.Web \ Plugins \.". Наприклад, у вищезгаданого платіжного модуля Authorize.NET шлях цей встановлений в ".. \ .. \ Presentation \ Nop.Web \ Plugins \ Payments.AuthorizeNet". Як тільки це буде зроблено, то соответветствующіе збірки (DLL) плагіна будуть при компіляції автоматично копіюватися в папку \ Presentation \ Nop.Web \ Plugins \, яка використовується для вже розгорнутих плагінів.

Створення плагінів для nopcommerce

  1. У Visual Studio в контекстному меню проекту плагіна виберіть Properties.
  2. Виберіть вкладку Build.
  3. Натисніть кнопку Browse навпроти Output path і виберіть необхідну папку.

Дані дії необхідно виконати для всіх сущетсвующих конфігурацій вашої IDE ( "Debug" і "Release").

Наступним кроком буде створення файлу Description.txt, необхідного для роботи будь-якого плагіна. Даний файл містить мета-інформацію, що описує ваш плагін. Ви можете просто скопіювати даний файл з будь-якого вже існуючого плагіна і змінити його під свої вимоги. Наприклад, ось як виглядає даний файл у плагіна для платіжної системи Authorize.NET:

Створення плагінів для nopcommerce

  • І останнім кроком, необхідним для створення плагіна, буде додавання класу, який реалізує інтерфейс IPlugin (простанство імен Nop.Core.Plugins). До речі, в nopCommerce вже є клас BasePlugin, який реалізує даний інтерфейс і дозволяє вам уникнути непотрібний повторень коду, так можете сміливо успадковуватися від нього. У nopCommerce також є кілька специфічних інтерфейсів, успадкованих від IPlugin. Наприклад, інтерфейс IPaymentMethod використовується для створення платіжних модулів. Він містить кілька методів, які використовуються тільки в платіжних методах, наприклад ProcessPayment (). Ми можете знайти опис цих інтерфейсів нижче:
    • IExternalAuthenticationMethod. Використовується для створення зовнішніх методів аутентифікації, таких як Facebook, Twitter, OpenID і тому подібні.
    • IWidgetPlugin. Дозволяє створювати віджети. Віджети відображаються в разліних частинах вашого сайту. Наприклад, можна створити віджет "Live chat", який буде показаний в лівій колонці вашого сайту.
    • IExchangeRateProvider. Використовується для отримання курсів валют.
    • IDiscountRequirementRule. Використовується для створення різних вимог для знижок. Наприклад, покупець повинен попередньо купити определнной товар, щоб знижка стала активною.
    • ISMSProvider. СМС плагіни дозволяють відсилати СМС повідомлення для таких подій як розміщення замовлення.
    • IPaymentMethod. Використовуються для створення платіжних плагінів і прийому платежів.
    • IPromotionFeed. Даний тип плагінів використовується для генерації прайсів та інших списків продуктів для різних сервісів порівняння цін і каталогів продуктів. Наприклад, для Froogle (Google Product Search) або PriceGrabber
    • IShippingRateComputationMethod. Провайдери розрахунку вартості і способів доставки товару (наприклад, UPS, UPS, FedEx).
    • ITaxProvider. Використовуються для розрахунку податкових ставок.
    1. Якщо ваш плагін не відноситься не до одного і вищеописаних типів, то використовуйте інтерфейс IMiscPlugin.
    2. Важливо. Після кожної зміни вихідного коду плагіна і перед його компіляцією, робіть у основного солюшени clean, тому що деякі файли можуть залишитися закеширувалася середовищем розробки.

    Тепер ви можете побачити створений плагін в панелі адміністрування (меню Configuration> Plugins). Але як ви вже зрозуміли, наш плагін ще поки нічого робити не вміє. У нього навіть немає пользователького інтерфейсу (сторінки) для його настройки. Давайте створимо таку сторінку. Для цього нам буде потрібно створити контролер, модель і уявлення.

    1. Контролери відповідають за обробку запитів. Кожне відкриття сторінки на сайті відповідає контретному контролери і методу. Він контролює введення даних користувачем і використовує модель і уявлення для реалізації необхідної реакції.
    2. Подання містить HTML код, тобто відповідає за відображення інформації (візуалізацію).
    3. Модель - це дані.

    Більше про MVC ви можете дізнатися тут.

    1. Створення моделі. Додайте папку Models до проекту плагіна і потім додайте клас моделі, яка задовольняє вашим Требон.
    2. Створення уявлення. Додайте папку View до проекту плагіна. Потім підпапку, де - це назва вашого плагіна. Ну і нарешті cshtml файл з поданням. Важливим моментом є те, що цей файл повинен бути позначений як Embedded resource.
    3. Створення контролера. Додайте папку Controllers до проекту плагіна і сам клас контролера. Правилом хорошого тону буде назвати цей файл Controller.cs (наприклад, PaymentAuthorizeNetController.cs). Тепер додайте в нього метод Configure (), підготуйте в ньому модель і передайте її в уявлення з ім'ям "Nop.Plugin ... Views..Configure" (це шлях embedded ресурсу, який ми створили на попередньому кроці). Для того щоб краще зрозуміти, як правильно реалізувати контролер, ви можете поглянути на реалізацію PaymentAuthorizeNetController у платіжного модуля для Authorize.NET.

    Підказка 1. Скопіюйте файл web.config з будь-якого вже існуючого плагіна, щоб додати підтримку IntelliSense при роботі з уявленнями.

    Підказка 3. Якщо ви хочете обмежити доступ до певних методів вашого плагіна тільки для адміністраторів, то додайте до відповідного методу атрибут [AdminAuthorize]

    Ось, наприклад, як виглядає проект плагіна Authorize.NET, на який ми часто посилалися раніше.

    Створення плагінів для nopcommerce

    Тепер нам необхідно зареєструвати маршрути (Routes) нашого плагіна. Вони відповідають за відповідність запитаних користувачем сторінок (URL) і методів існуючих контролерів. Більш детальну інформацію про маршрутах ви можете знайти тут.

  • У деяких з описаних вище інтерфейсів (наприклад, IPaymentMethod або IMiscPlugin) є метод GetConfigurationRoute, який повинен повертати маршрут (route) на сторінку, де плагін налаштовується. Так nopCommerce дізнається, який метод контролера відповідає за настройку плагіна. Якщо ж установка не потрібно, то просто поверніть в цьому методі null. наприклад,

    Як тільки вищеописані дії буде реалізовано і плагін буде встановлено, то в панелі адміністрування (Configuration> Plugin) ви побачите посилання на сторінку з налаштуванням плагіна.

    Цей крок не є обов'язковим і може бути пропущений. Деякі плагіни вимагає додаткових дій під час установки, наприклад додавання нових локальних ресурсів. Якщо ви теж хочете додати якісь дані при установці, то відкрийте ваш клас, який реалізує IPlugin (і можливо BasePlugin), і перевизначите (override) такі методи

    1. Install. Це метод буде викликаний під час установки. Тут ви можете додати нові локальні ресурси, зберегти будь-які настройки або додати нові таблиці в БД (якщо це необхідно).
    2. Uninstall. Це метод буде викликаний під час видалення плагіна.

    Важливо. Якщо ви переопределяется один з цим методів, то ні в якому разі не ховайте базову реалізацію. Наприклад, перевизначення метод Install все одно повинен викликати базовий метод base.Install ().

    Ось наприклад як виглядає метод Install у платіжного модуля AuthorizeNet:

    Підказка. Список всіх встановлених плагінів можна знайти в файлі \ App_Data \ InstalledPlugins.txt, який створюється в процесі установки nopCommerce.

    Деякі з плагінів можуть втратити свою актуальність і не працювати з останніми версіями nopCommerce. Якщо у вас виникли проблеми з будь-яким плагіном після поновлення nopCommerce до більш нової версії, то відвідайте офіційний сайт. щоб дізнатися чи не вийшла оновлена ​​версія цього плагіна. Якщо ж ви не можете знайти плагін для нової версії, то в більшості випадків (якщо API не було змінено) Пролема вирішується простим відкриттям файлу Description.txt і оновлення поля SupportedVersions.

    Схожі статті