Создание дополнения
Дополнение — папка с вашим кодом, которую магазин ставит и удаляет целиком. До сих пор файлы клались рядом с ядром; начиная с этого урока всё живёт в extension/acme_hello/. Файлы ядра не меняются, поэтому магазин можно обновлять.
Структура
Внутри дополнение повторяет структуру ядра: часть admin и часть catalog, в каждой — контроллеры, модели, шаблоны и переводы.
acme_hello/
├── install.json
├── admin/
│ ├── controller/module/acme_hello.php
│ └── language/en-gb/module/acme_hello.php
└── catalog/Папка module — вид дополнения. Другие виды: payment, shipping, total, theme, report. Создайте эту папку в любом месте на компьютере — в магазин она попадёт через установщик.
install.json
Файл в корне дополнения описывает его:
{
"name": "Acme Hello",
"version": "1.0.0",
"author": "Acme",
"link": "https://example.com"
}Эти значения видны в списке установленных пакетов.
Минимальная часть для панели
Чтобы дополнение появилось в списке модулей, ему нужны контроллер панели и файл перевода с названием. Панель по умолчанию английская, поэтому файл лежит в en-gb:
// admin/language/en-gb/module/acme_hello.php
$_['heading_title'] = 'Acme Hello';// admin/controller/module/acme_hello.php
namespace Opencart\Admin\Controller\Extension\AcmeHello\Module;
class AcmeHello extends \Opencart\System\Engine\Controller
{
public function index(): void
{
$this->response->setOutput('Настройки Acme Hello');
}
}Контроллер только выводит строку; в следующем уроке он станет страницей настроек.
Имена
| Что | Правило | Значение |
|---|---|---|
| Папка и архив | Строчные буквы, цифры, подчёркивание | acme_hello |
| Пространство имён | Extension, имя папки в «верблюжьей» записи, вид | Opencart\Admin\Controller\Extension\AcmeHello\Module |
| Маршрут | extension/, папка, вид, файл | extension/acme_hello/module/acme_hello |
Упаковка
В архив zip, имя которого заканчивается на .ocmod.zip, упаковывают содержимое папки — не саму папку:
cd acme_hello
zip -r ../acme_hello.ocmod.zip .Имя архива до .ocmod.zip станет именем папки в extension/.
Установка
- В панели откройте
Extensions → Installer, загрузитеacme_hello.ocmod.zipи нажмите кнопку установки в его строке. Файлы распакуются вextension/acme_hello/. - Откройте
Extensions → Extensions, выберите видModules, найдите «Acme Hello» и нажмите кнопку установки. - Нажмите кнопку редактирования в той же строке.
Откроется страница admin/index.php?route=extension/acme_hello/module/acme_hello&user_token=... со строкой «Настройки Acme Hello».
После установки файлы можно править прямо в extension/acme_hello/ — перепаковывать архив после каждого изменения не нужно. Новый архив собирают, когда дополнение передают в другой магазин.
Частая ошибка
Архив делают из самой папки, и внутри него оказывается acme_hello/install.json вместо install.json. Установщик не находит описание и отклоняет пакет. Откройте архив: install.json, admin и catalog должны лежать на верхнем уровне.