Постановка задачи
Задача: добавить на сайт (OpenCart v 3.x) новый способ доставки, «Почта Беларуси».
Решение задачи по созданию нового способа доставки
За основу, нового способа доставки возьму модуль «Фиксированная стоимость доставки». Соответственно мне надо извлечь файлы этого модуля с опенкара для дальнейшей переделки.
Нахожу все файлы flat.* и сохраняю отдельно, с сохранением структуры вложенности.
Готовый, извлеченный модуль, можно скачать здесь.
Далее меняем название фалов модуля, был flat.* стал post_belarus.*
Открываем файл \admin\controller\extension\shipping\post_belarus.php
и делаем в нем правки
меняем название класса
<?php class ControllerExtensionShippingPostBelarus extends Controller { . . . }
Далее заменяем все где встречается flat на post_belarus
Тоесть будут новые названия параметров, урлов и настроек как раз под новую доставку
В файле \admin\language\ru-ru\extension\shipping\post_belarus.php
меняем выводимый текст на новый
<?php // Heading $_['heading_title'] = 'Почта Беларуси';
Теперь дошли до файла шаблона
\admin\view\template\extension\shipping\post_belarus.twig
в нем проделываем так же замену flat на post_belarus
С админ частью модуля закончили, теперь правим файлы от фронтэнда
Правим файл модели
\catalog\model\extension\shipping\post_belarus.php
Меняем название класс
<?php class ModelExtensionShippingPostBelarus extends Model { . . . }
так же, в нем проделываем замену flat на post_belarus
Правим файл перевода
\catalog\language\ru-ru\extension\shipping\post_belarus.php
<?php // Text $_['text_title'] = 'Почта Беларуси'; $_['text_description'] = 'Доставка почтой Беларуси';
Все, теперь новый модуль доставки готов и фунциклирует )
Пример можно скачать тут.
В данном примере, я показал как создать новую доставку на основании существующей, тоесть продублировать с изменением названия доставки.
Можно конечно и заморочится, добавив в доставку новые параметры а потом привязать их с оплатой, но это уже отдельная тема.