Модуль доставки PrestaShop 1.5

Медленно, очень медленно делаю модуль доставки почтой России для PrestaShop 1.5. Медленно по двум причинам: во-первых мне он сейчас не очень нужен, идет поиск дизайнера, верстальщика и паралелльно согласование хотелок с заказчиком. Во-вторых очень трудно разбираться со скриптом, пусть даже и написанным довольно грамотно, без всякой документации. Английским и французским я владею, конечно, в некоторых пределах чтоб понять, о чем пишут на форумах, но там не слишком много полезного.

Update: первая, вроде, рабочая версия.

Модуль, в начальной версии, будет считать доставку по России по формуле почты, с разделением на тарифные поясы, без запросов к серверу почты — они активно борются с такими вещами (непонятно зачем). Настроек будет довольно много, поскольку, например, надо будет назначить тарифный пояс каждому региону, на который поделена Россия. Поэтому модуль будет интегрироваться в меню «Shipping», вот как-то так:

Пункт верхнего меню с Почтой России

Структура модулей в версии 1.5 прилично изменилась по сравнению с предыдущей версией. Несмотря на то, что сохраняется совместимость, хочется, все-таки сделать именно для 1.5, учитывая максимум новых нововведений.

Очень много времени уходит на то, чтобы понять еще две вещи — ответов в Google на возникший вопрос «как правильно делать» нет, на форуме тоже нет и имеющиеся в распоряжении бесплатные модули используют старый метод, совместимый с 1.4

Пока работаю только над админской частью, тешу себя надеждой, что расчет будет сделать проще — с версии 1.4 там почти ничего не изменилось.

Итак, начнем с файловой структуры. Как и ранее, дополнительные модули располагаются в директории modules. Как и ранее, должен быть xml файл с описанием модуля, иконка, файл модуля. Дополнительно появляется теперь папка с контроллерами, моделями и видами (views). Виды, честно говоря, я еще не трогал — ничего про них сказать не могу.

Мой модуль выглядит примерно так:

Стркутура директории с модулем PrestaShop

Поскольку все изготавливовалось методом проб и ошибок, названия файлов и классов не везде получились удачные. Приходилось переименовывать на ходу, внося изменения в скрипты модуля, у PrestaShop обнаружились соглашения по наименованию файлов как описанные в скудной документации, так и неописанные. Вот, на картинке вижу уже лишний файл — config.tpl — огрызок какого-то эксперимента, удалю его потом.

Общеизвестные соглашения по именованию:

  • имя модуля, вернее, его уникальный идетификатор, должен быть прописан в config.xml
  • Название директории с модулем должно быть такое-же, как имя модуля
  • Название основного файла модуля должно быть такое же, как имя модуля (и, соответственно, как название директории). В моем случае основной файл — russianpostcarrier.php
  • Название класса модуля должно быть такое же, как имя модуля

Есть еще мутный вопрос про символы подчеркивания, преобразование в разный регистр (CamelCase). Я, честно говоря, запутался с ними — где надо преобразовывать, где не надо и убрал из названия все символы подчеркивания. Надеюсь с этой проблемой разобраться когда-нибудь очень потом.

Файлы с логотипом — logo.gif, размером 16×16 для версии PrestaShop 1.4, не знаю, зачем он мне сдался, но пусть будет. logo.png — размером 32×32 для версии PrestaShop 1.5, показывается в списке модулей.

Ну и в оконччание первого поста, по традиции многих других постов про модули PrestaShop в многочисленных блогах, самое бесполезное — файл config.xml.

Со струтурой этого файла как раз все довольно просто.

name
Имя модуля. Уникальное в пределах всего сайта. Должно совпадать с названием директории модуля, названием основного файла модуля и названием класса, в основном файле
displayName
Название модуля. Это человекопонятное название, которое показывается в списке модулей
description
Описание. Не думаю, что нужно развернуто объяснять.
author
Тоже нетрудно догадаться
tab
Это раздел, в который попадает модуль в списке модулей. Больше ни на что не влияет. В данном случае: Доставка. Перечисление всех возможных разделов я находил, уже потерял, но найти еще раз нетрудно, при желании. Будет время — найду.
is_configurable
Некоторые модули можно настраивать прямо в списке модулей — у них после установки появляется кнопка «Настроить». У меня запланирован отдельный пункт меню для настройки, так что здесь эта кнопка явно не требуется.
need_instance
Чтобы модуль, требующий настройки мог что-нибудь сообщить, типа ошибки или предупреждения, что он не настроен и требует внимания, его надо запустить при построении списка модулей. Если модуль ничего не сообщает, то можно его и не запускать — экономит память.
limited_countries
Можно указать, что модуль не для всех стран. Вы, наверное, встречали такие. Какие значения сюда писать не разбирался. Не думаю, что сложно будет найти, если понадобится. Скорее всего перечисление ISO кодов стран. Если пусто, то ограничений нет.

Пока все. В следующем посте опишу, что сделал в главном файле модуля.

Автор

Сергей Родовниченко

Родился, учился, работал и все такое. Занимаюсь поддержкой сайтов на Shop-Script, Joomla, Wordpress, Prestashop. А также на самописных движках на базе CakePHP.

2 thoughts on “Модуль доставки PrestaShop 1.5”

    1. Надеюсь к концу этой недели сделать рабочий вариант с минимумом функционала.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *