Приветствую, коллеги! Хочу поделиться PowerShell-скриптом, который значительно ускоряет разработку модулей для OpenCart 4. Он создаёт всю необходимую иерархию каталогов и файлов, генерирует PHP-классы с правильными namespace и даже добавляет основные методы в админ-контроллер — всё в пару кликов. Что делает скрипт? Скрипт запрашивает у вас три параметра: Идентификатор модуля — имя, которое будет использовано как: имя корневой папки (с суффиксом .ocmod), имя PHP-файлов (контроллеры, модели, языковые), идентификатор (поле code) в install.json, часть namespace (как вендор). Имя модуля — человекочитаемое название для поля name в install.json. Описание модуля — для поля description в install.json. После этого вы выбираете тип модуля из списка (shipping, payment, module, total, theme, report, analytics, fraud, captcha, feed, currency, other) или вводите свой вариант. На выходе вы получаете готовую папку с именем [ваш_идентификатор].ocmod, внутри которой: admin/controller/{тип}/{идентификатор}.php — с методами index(), save(), install(), uninstall(); admin/model/{тип}/{идентификатор}.php; admin/view/template/{тип}/{идентификатор}.twig (пустой); admin/language/en-gb/{тип}/{идентификатор}.php (пустой); admin/language/ru-ru/{тип}/{идентификатор}.php (пустой); catalog/controller/{тип}/{идентификатор}.php (базовая заготовка); catalog/model/{тип}/{идентификатор}.php; catalog/language/en-gb/{тип}/{идентификатор}.php (пустой); catalog/language/ru-ru/{тип}/{идентификатор}.php (пустой); install.json (с заполненными полями, без BOM); README.md (пустой). Все PHP-файлы сохраняются в UTF-8 без BOM, что гарантирует совместимость с OpenCart и корректную обработку кириллицы в комментариях. ⚙️ Как использовать Скачайте скрипт (код ниже) и сохраните его как folder.ps1. Убедитесь, что файл сохранён в кодировке Windows-1251 (ANSI) (через Notepad++: «Кодировки» → «Преобразовать в ANSI»). Это нужно для корректного отображения русских подсказок в консоли. Откройте PowerShell в папке со скриптом. Выполните .\folder.ps1 (или Set-ExecutionPolicy RemoteSigned -Scope CurrentUser, если выполнение скриптов запрещено). Следуйте подсказкам: Введите идентификатор модуля (например, myshipping). Введите имя модуля (например, Моя доставка). Введите описание. Выберите тип модуля из списка. Готово! В текущей папке появится каталог myshipping.ocmod с полной структурой.
Коллеги, За прошедшее время я доработал скрипт folder.ps1 и хочу представить вторую версию, которая генерирует полноценный рабочий модуль для OpenCart 4 — с языковыми файлами, шаблоном Twig и даже с регистрацией событий (events). Что нового? ✅ Готовые языковые файлы Теперь скрипт создаёт файлы admin/language/en-gb/{тип}/{идентификатор}.php и admin/language/ru-ru/{тип}/{идентификатор}.php с полным набором строк: $_['heading_title'], $_['text_extension'], $_['text_success'], $_['text_edit'] $_['entry_status'], $_['button_save'], $_['button_cancel'], $_['error_permission'] Для русского языка используется имя модуля (которое вы вводите), для английского — идентификатор (латиница). Больше не нужно вручную копировать языковые константы! ✅ Административный шаблон Twig Шаблон admin/view/template/{тип}/{идентификатор}.twig теперь полностью рабочий: Автоматически подставляются названия полей и кнопок из языковых файлов. Чекбокс статуса привязан к переменной {{ status }}, а имя поля генерируется как {тип}_{идентификатор}_status. Форма отправляется через AJAX (data-oc-toggle="ajax") — всё по современным стандартам OC4. ✅ Регистрация событий (events) В методе install() контроллера теперь автоматически создаётся событие (например, для перехвата добавления товара в корзину). Это избавляет от ручного добавления событий через админку. Код события генерируется из идентификатора модуля. При uninstall() событие удаляется. ✅ Все переменные подставляются динамически Вместо жёстких строк sdekpost или shipping теперь используются введённые вами значения: {идентификатор} → имя папки, файлов, класса, code в install.json {тип} → выбранный тип модуля (shipping, payment, module и т.д.) {имя_модуля} → человекочитаемое название для языковых файлов и install.json Что скрипт генерирует сейчас (полный список) admin/controller/{тип}/{идентификатор}.php С методами index(), save(), install(), uninstall(). В install() регистрируется событие, в uninstall() удаляется. admin/model/{тип}/{идентификатор}.php Базовая заготовка модели. admin/view/template/{тип}/{идентификатор}.twig Полноценная страница настроек с чекбоксом статуса, хлебными крошками и кнопками. admin/language/en-gb/{тип}/{идентификатор}.php Английские языковые строки. admin/language/ru-ru/{тип}/{идентификатор}.php Русские языковые строки. catalog/controller/{тип}/{идентификатор}.php Базовая заготовка фронтенд-контроллера. catalog/model/{тип}/{идентификатор}.php Модель каталога. catalog/language/en-gb/{тип}/{идентификатор}.php Пустой файл (с комментарием // TODO — вы можете добавить свои строки). catalog/language/ru-ru/{тип}/{идентификатор}.php Аналогично. catalog/view/theme/default/template/{тип}/{идентификатор}.twig Пустой шаблон для фронтенда (заглушка). install.json Заполненный файл метаданных (имя, код, версия, автор, ссылка, описание). README.md Пустой файл для ваших заметок. Всё это упаковывается в ZIP-архив с именем {идентификатор}.ocmod.zip, готовый для загрузки в установщик OpenCart 4.