Если вы как и я, разрабатываете модули для 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