PrestaShop 1.6 - памятка для авторов модулей (для новичков)
- Категория: Код
- – Автор: Игорь (Администратор)
Техническая документация для создания своих модулей в PrestaShop 1.6 достаточно обильная. Однако, как и в большинстве подобных документах, в ней отсутствуют простые, но порой важные моменты. Такие, как например, создание своей формы для AdminController модуля без встроенного хелпера или же преобразование строки в url. Вся эта информация есть в интернете, но она раскидана по массе сайтов, из-за чего на ее поиск уходит много времени (конечно, в крайнем случае всегда можно покопаться в классах ядра, но все же). Как бы то ни было, в данной небольшой памятке я перечислю несколько полезных моментов и дам некоторые советы для начинающих.
Примечание: Статья предназначена для начинающих, так что если у вас за плечами уже не один модуль, то этот материал, вероятно, не для вас.
Начну от самого простого
1. Проблема с установкой PrestaShop 1.6. Падает на установке модулей
Несмотря на то, что сама PrestaShop 1.6 легко запускается на php 5.3 (она официально поддерживает эту версию), в инсталляционный пакет входят модули, которые используют конструкции php 5.4. Поэтому установка обрывается на модулях.
Примечание: В этом случае вам пригодится моя статья несколько версий php на Denwer.
2. Как выполнить sql-запрос и получить результат
Небольшой совет, имеет смысл создать дочерние функции или же класс-обертку для всех методов, так как это поможет весьма упростить код. Например, вот так:
3. Как узнать идентификатор и код языка по дефолту
4. Вывод собственной формы в бэк-контроллере модуля (административного) с использованием шаблона Smarty без хелпера
Чтобы вывести собственную форму с использованием шаблонизатора Smarty, необходимо в админ-контроллере переопределить метод initContent. И делается это следующим образом:
Теперь, можно использовать свои шаблоны и передавать туда собственные переменные (массивы, числа, строки).
5. Ajax вызов методов админ контроллера модуля из jQuery
В PrestaShop 1.6 есть собственный механизм, который на основании параметров из GET / POST (QueryString и Form) определяет какой метод необходимо вызвать и который определяет является ли сам вызов ajax запросом. В документации приводится пример отправки и получения данных с использованием передачи параметров в data для конструкции $.ajax. Однако, такое не всегда удобно. Например, если вы формируете данные через serializeArray(). В таком случае можно использовать следующее
Обратите внимание на то, как строится название ajax метода. Вначале идет константа "ajaxProcess", а затем идет название вашего метода "MethodName". Так же важно, чтобы возврат json данных осуществлялся не с помощью "return", а с помощью конструкции "die", так как иначе могут возникать ошибки с заголовком ответа.
Чтобы вызвать данный метод нужно сформировать соответствующий url. Приведу пример того, как это можно сделать в шаблоне Smarty.
Обратите внимание, что кроме передачи token в админке, так же передаются параметры ajax и action. Параметр ajax указывает, что метод представляет собой асинхронный вызов. А в параметре action передается имя метода (первая буква маленькая).
Конечно, параметры ajax и action можно передавать и в data конструкции $.ajax, но все же проще сформировать такой url, а данные собирать с помощью стандартного метода jQuery для формы serializeArray().
6. Создание и удаление собственных закладок административных контроллеров модуля PrestaShop
Для того, чтобы было удобно вызывать бэк-контроллеры модуля в админке, можно использовать механизм закладок. Достаточно использовать следующие два метода и осуществлять их вызов в основном файле модуля
Учтите, что данные методы необходимо вызывать в основных методах install и uninstall модуля и так же проверять при установке и удалении, что они возвращают "true".
7. И напоследок, несколько полезных методов класса Tools
Надеюсь это небольшая памятка поможет вам при создании ваших модулей для PrestaShop 1.6.
☕ Понравился обзор? Поделитесь с друзьями!