Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Создание дополнения

Дополнение — папка с вашим кодом, которую магазин ставит и удаляет целиком. До сих пор файлы клались рядом с ядром; начиная с этого урока всё живёт в 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/.

Установка

  1. В панели откройте Extensions → Installer, загрузите acme_hello.ocmod.zip и нажмите кнопку установки в его строке. Файлы распакуются в extension/acme_hello/.
  2. Откройте Extensions → Extensions, выберите вид Modules, найдите «Acme Hello» и нажмите кнопку установки.
  3. Нажмите кнопку редактирования в той же строке.

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

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.