Если вы как и я, разрабатываете модули для OpenCart, то стартовый модуль OpenCart 4 вам может пригодиться. Вы не можете не согласиться, что каждый новый модуль начинается с одинаковой рутинной работы: создание папок, копирование шаблонов, формирование контроллеров и моделей для админки и каталога, подготовка языковых файлов и шаблонов Twig, а потом ещё упаковка всего этого в .ocmod.zip для установки.

Честно говоря, это утомительно и отнимает кучу времени, особенно если нужно часто запускать новые проекты. Как разработчик, я часто думал как автоматизировать этот процесс и сделать его максимально удобным. Так появился стартовый шаблон для создания модуля для OpenCart 4.

Идея была простой: сделать инструмент, который за одну минуту создаёт:

  • полностью готовую структуру модуля для OpenCart 4;
  • правильно именованные контроллеры, модели и языковые файлы;
  • шаблоны Twig и подключенные файлы стилей и скриптов для конкретного модуля;
  • ZIP-архив для быстрой установки.

Я продумал всё так, чтобы достаточно было вызвать скрипт с именем нового модуля, например:

php start.php my_module

И в результате вы сразу получаете готовый модуль с корректной структурой и файлами. Все плейсхолдеры %name% и %ModuleName% автоматически заменяются, так что модуль можно сразу тестировать и ставить на магазин.

С этого момента каждый новый проект превращается в миг процесс: не нужно больше тратить часы на рутинную работу — скрипт делает всё за вас. Для меня, как для разработчика под OpenCart, это не просто экономия времени — это способ поддерживать стандарты качества и единообразие модулей.

Как работает скрипт генератора стартового модуля OpenCart 4 ?

Первое, что делает скрипт — это берёт имя нового модуля из аргументов командной строки. Например, если вы вызовете:

php start.php my_module

скрипт автоматически:

  • заменяет дефисы на подчёркивания;
  • формирует корректное имя класса для контроллеров и моделей (MyModule вместо my_module).

Это важно, потому что OpenCart требует строгого соответствия имён классов и файлов.

Такой подход позволяет не тратить время на ручное переименование файлов и классов, а сразу получить модуль, который можно использовать.


Структура исходного шаблона Source

Для генератора я подготовил исходный шаблон, где все файлы уже созданы, но с плейсхолдерами %name% и %ModuleName%.

Пример структуры папки Source:

%name%/
├─ admin/
│  ├─ controller/
│  │   ├─ module/
│  │   │    └─ %name%.php
│  │   └─ event/
│  │        └─ %name%.php
│  ├─ model/
│  │   └─ module/
│  │        └─ %name%.php
│  ├─ view/
│  │   └─ template/
│  │        └─ module/
│  │             └─ %name%.twig
│  └─ language/
│       ├─ en-gb/
│       │   └─ module/
│       │        └─ %name%.php
│       └─ ru-ru/
│           └─ module/
│                └─ %name%.php
├─ catalog/
│  ├─ controller/
│  │   ├─ module/
│  │   │    └─ %name%.php
│  │   └─ event/
│  │        └─ %name%.php
│  ├─ model/
│  │   └─ module/
│  │        └─ %name%.php
│  ├─ view/
│  │   ├─ template/
│  │   │    └─ module/
│  │   │         └─ %name%.twig
│  │   ├─ javascript/
│  │   │    └─ %name%.js
│  │   └─ stylesheet/
│  │        └─ %name%.css
│  └─ language/
│       ├─ en-gb/
│       │   └─ module/
│       │        └─ %name%.php
│       └─ ru-ru/
│           └─ module/
│                └─ %name%.php
├─ README.md
├─ install.json
└─ LICENSE


Все файлы уже готовы к использованию — скрипт просто копирует их в новый каталог с именем вашего модуля и заменяет плейсхолдеры на правильные значения.


Копирование и замена плейсхолдеров

Сердце генератора — функции recurseCopy() и replacePlaceholders().

  • recurseCopy() проходит по всем папкам шаблона и копирует их в новый модуль.
  • replacePlaceholders() берёт все файлы и заменяет %name% и %ModuleName% на конкретное имя вашего модуля и класс.

Пример, как это выглядит в скрипте:

$nameRaw = $argv[1];
$name = str_replace('-', '_', $nameRaw);
$moduleName = str_replace(['_', '-'], ' ', $name);
$moduleName = str_replace(' ', '', ucwords($moduleName));

После этого все файлы и папки автоматически получают правильные имена, и модуль уже готов к использованию в OpenCart 4.


Формирование ZIP-архива

Последний этап работы генератора — создание архива .ocmod.zip.

Почему это важно? OpenCart устанавливает модули только через ZIP или через систему расширений. Скрипт кладёт все файлы в архив без лишних вложенных папок, чтобы его можно было сразу загрузить в админку.

Пример:

$zipFile = $rootDir . '/' . $name . '.ocmod.zip';
zipFolder($innerDir, $zipFile);

В результате вы получаете полностью готовый модуль, который можно устанавливать, тестировать и расширять.


Скрипт start.php превращает процесс создания стартового модуля OpenCart 4 из рутины в автоматическую операцию:

  • никакой ручной работы с папками и файлами;
  • корректные имена классов и файлов;
  • поддержка фронтенда и админки;
  • готовый ZIP для установки.

Как разработчик, могу сказать: это экономит приличное количество времени при каждом новом модуле и позволяет сосредоточиться на функционале, а не на структуре.

Структура сгенерированного стартового модуля OpenCart 4

После того как вы запустите скрипт Start, вы получаете полностью готовый модуль с правильной структурой. Для примера, если имя вашего модуля — my_module, структура будет выглядеть так:

my_module/
├─ my_module/
│  ├─ admin/
│  │   ├─ controller/
│  │   │    └─ …
│  │   ├─ model/
│  │   │    └─ …
│  │   ├─ view/
│  │   │    └─ …
│  │   └─ language/
│  │        └─ …
│  ├─ catalog/
│  │   ├─ controller/
│  │   │    └─ …
│  │   ├─ model/
│  │   │    └─ …
│  │   ├─ view/
│  │   │    └─ …
│  │   └─ language/
│  │        └─ …
│  ├─ README.md
│  ├─ LICENSE
│  └─ install.json
└─ my_module.ocmod.zip



1. Админка и фронтенд

Внутри папки admin/ находятся все файлы, необходимые для панели управления:

  • Контроллеры — логика работы модуля в админке.
  • Модели — работа с базой данных, настройками модуля.
  • Шаблоны Twig — визуальная часть интерфейса модуля.
  • Языковые файлы — поддержка английского и русского языков.

В папке catalog/ лежат аналогичные файлы для фронтенда: контроллеры, модели, шаблоны, JS и CSS для работы с клиентской частью сайта.

Эта организация повторяет стандарты OpenCart 4, так что модуль готов к установке без правок.


2. ZIP-архив для быстрой установки

Сразу после генерации скрипт создаёт файл my_module.ocmod.zip.
Почему это круто:

  • OpenCart умеет ставить модули только через ZIP или расширения.
  • Не нужно вручную архивировать файлы.
  • Все файлы сразу попадают в корень архива — никаких лишних вложенных папок.

Это значит, что после запуска скрипта вы можете мгновенно установить модуль через админку: Расширения → Модули → Загрузить модуль.


3. Практическая польза

Почему я сделал именно такую структуру:

  • Скорость — теперь создание стартового шаблона модуля OpenCart 4 занимает секунды вместо часов.
  • Стандартизация — все модули имеют одинаковую организацию файлов.
  • Простота доработки — легко добавлять новые функции, стили и JS для фронтенда, ничего не ломая.
  • Поддержка нескольких языков — английский и русский встроены из коробки.

По опыту, когда начинаешь проект с правильной структурой, намного проще поддерживать модуль и масштабировать его. Нет «бардака» в папках и файлах, всё логично и предсказуемо.

P.S. Создавайте модули быстрее, развивайте свои проекты качественно и не тратьте время на рутину — скрипт start.php уже готов сделать для вас стартовый шаблон.

Скачайте скрипт для генерации стартового шаблона модулей OpenCart 4 с публичного GitHub репозитория : https://github.com/Webpolka/oc_module_generator_4.1.0.3