Сегодня мы будем готовить свой модуль для opencart с нуля. Такая необходимость часто возникает у разработчиков магазинов. Если сегодня это необходимость возникла и у вас - читаем далее

Структура файлов и директорий

Для начала нужно понимать, что opencart и его модули написаны по схеме mvc или даже mvcl. Для многих это понятная и привычная схема, но не для всех. Поэтому пару слов об mvc в opencart

M - Model. Отвечает за работу с базой данных
V - Viewer. Отвечает за отображение модуля конечному пользователю
C - Controller. Отвечает за взаимодействие между моделью и вьювером
L - Language. Отвечает за языки, для которых будет формироваться контент

Следственно у нас должен появиться набор директорий для админки и фронтэнда:

  1. admin/controller/extension/module
  2. admin/model/extension/module - не обязательно, если не предполагаются запросы к базе данных
  3. admin/language/ru-ru/extension/module - это для русского языка. Если нужны другие языки - нужно и для других
  4. admin/view/template/extension/module
  5. catalog/controller/extension/module
  6. catalog/model/extension/module - не обязательно, если не предполагаются запросы к базе данных
  7. catalog/language/ru-ru/extension/module- это для русского языка. Если нужны другие языки - нужно и для других
  8. catalog/view/theme/default/extension/module

Итого 31 (Тридцать одну!) директорию нам нужно создать. И это только для иерархии.

Неужели нет способа проще? Конечно же есть, но о нем позже. Нам же нужно понимать как устроен opencart и как он работает.

Теперь определяемся с именем модуля и его назначением. Пусть это будет "Рекомендуемые плюс" (featuredplus). А делать он будет вот что:

Рекомендовать товары покупателям в зависимости от категории, в которой они находятся.

В каждую конечную директорию (module) для контроллера, модели и языка нужно поместить php файл, а в конечную директорию вьюверов - twig файл с именем нашего модуля. Таким образом у нас получится следующая структура:

  1. admin/controller/extension/module/featuredplus.php
  2. admin/language/ru-ru/extension/module/featuredplus.php
  3. admin/language/en-gb/extension/module/featuredplus.php
  4. admin/view/template/extension/module/featuredplus.twig
  5. catalog/controller/extension/module/featuredplus.php
  6. catalog/language/ru-ru/extension/module/featuredplus.php
  7. catalog/language/en-gb/extension/module/featuredplus.php
  8. catalog/view/theme/default/extension/module/featuredplus.twig

Кто заметил, что нет файлов модели? Тот получает виртуальный леденец 😉

Как же так? - Спросите вы. Мы разве не будем брать информацию о товарах из базы данных?

Будем. Но наш модуль не будет обращаться к базе данных. Мы просто подключим в контроллере нашего модуля модель товаров opencart. А модель товаров в свою очередь берет информацию из базы данных.

Теперь посмотрим на текст всех файлов

Теперь помещаем все это в директорию "upload", а ее в свою очередь в архив "featuredplus.oxmod.zip".

Модуль готов.

Установите его через установку расширений и пользуйтесь.

Как упростить создание модуля

Согласитесь, что создать 31 директорию, 8 файлов и хотя бы скопировать код каждого файла - дело достаточно трудоемкое и отнимает много времени.

Но есть выход. Просто устанавливаем модуль "Создание модулей"

После установки открываем в админке модуль "Создание модулей", задаем некоторые настройки и нажимаем сохранить.

При этом у нас есть 2 варианта:

  1. Сохранить существующий модуль
    Очень полезно, если вы разрабатываете модуль и по окончанию разработки его нужно сохранить в отдельные директории. Делается это одной кнопкой "Сохранить"
  2. Создать новый
    Задаем настройки, наименование модуля, заголовок и получаем готовый для установки .ocmod.zip файл
    Устанавливаем его, правим так как нам надо и опять сохраняем с помощью "Создание модулей"

Если у Вас остались вопросы, предложения, пожелания - пишите в комментариях.

Если вам требуется написать модуль под заказ - опишите какой функционал вы ожидаете от модуля и мы с вами свяжимся



Ответы

Ваш e-mail не будет опубликован. Обязательные поля помечены *

+

  1. Виктор

    Форма связи для заказа модуля не работает. При попытке её заполнить всё помечает как спам, даже имя.