Готовый скрипт для быстрого создания структуры модуля OpenCart 4

Тема в разделе "Модули и дополнения", создана пользователем smagluk, 21 авг 2026 в 12:36.

  1. smagluk

    smagluk Пользователь

    Сообщения:
    44
    Симпатии:
    5
    Приветствую, коллеги!

    Хочу поделиться PowerShell-скриптом, который значительно ускоряет разработку модулей для OpenCart 4. Он создаёт всю необходимую иерархию каталогов и файлов, генерирует PHP-классы с правильными namespace и даже добавляет основные методы в админ-контроллер — всё в пару кликов.

    Что делает скрипт?
    Скрипт запрашивает у вас три параметра:

    1. Идентификатор модуля — имя, которое будет использовано как:
      • имя корневой папки (с суффиксом .ocmod),

      • имя PHP-файлов (контроллеры, модели, языковые),

      • идентификатор (поле code) в install.json,

      • часть namespace (как вендор).
    2. Имя модуля — человекочитаемое название для поля name в install.json.

    3. Описание модуля — для поля 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 и корректную обработку кириллицы в комментариях.

    ⚙️ Как использовать
    1. Скачайте скрипт (код ниже) и сохраните его как folder.ps1.

    2. Убедитесь, что файл сохранён в кодировке Windows-1251 (ANSI) (через Notepad++: «Кодировки» → «Преобразовать в ANSI»). Это нужно для корректного отображения русских подсказок в консоли.

    3. Откройте PowerShell в папке со скриптом.

    4. Выполните .\folder.ps1 (или Set-ExecutionPolicy RemoteSigned -Scope CurrentUser, если выполнение скриптов запрещено).

    5. Следуйте подсказкам:
      • Введите идентификатор модуля (например, myshipping).

      • Введите имя модуля (например, Моя доставка).

      • Введите описание.

      • Выберите тип модуля из списка.
    6. Готово! В текущей папке появится каталог myshipping.ocmod с полной структурой.
     

    Вложения:

    Последнее редактирование: 21 авг 2026 в 12:41
  2. smagluk

    smagluk Пользователь

    Сообщения:
    44
    Симпатии:
    5
    Коллеги, За прошедшее время я доработал скрипт 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.
     

    Вложения: