Модуль состоит из множества файлов, все они хранятся в папке, имеющей то же имя, что и сам модуль. Эта папка, в свою очередь, хранится в папке /modules
в корне основной папки PrestaShop: /modules/<название_модуля>/
.
Ваш модуль может называться как угодно, пока его имя содержит только строчные буквы и цифры (/[a-z0-9]/
). Хотя подчеркивания (_
) допустимы, их использование не рекомендуется, так как они не работают с доменами перевода.
Модуль, распространяемый в zip-архиве, также должен быть размещен в подпапке внутри zip-файла.
Основные файлы и директории
Вот пример файлов и папок для модуля PrestaShop 1.7:
mymodule
├── config
│ ├── admin
│ │ └── services.yml
│ ├── front
│ │ └── services.yml
│ └── services.yml
├── controllers
├── override
├── src
│ ├── Controller
│ └── Entity
├── translations
├── upgrade
├── vendor
├── views
│ ├── css
│ ├── img
│ ├── js
│ └── templates
├── config.xml
├── logo.png
└── mymodule.php
Давайте рассмотрим каждую из вышеупомянутых папок и файлов более подробно.
Папка config/
Папка config
используется для хранения файлов конфигурации. В частности, это могут быть файлы для Маршрутов и Сервисов.
Папка controllers/
Папка controllers
содержит файлы контроллеров старого образца. В зависимости от места назначения контроллера, он находится в разной подпапке:
/controllers/admin
: контроллеры административной панели модуля./controllers/front
: контроллеры фронтальной части модуля.
Контроллеры, основанные на Symfony, находятся в папке src
, как описано ниже.
Папка override/
Файлы PHP, размещенные в папке override
, заменяют файлы из ядра.
Использование overrides - мощная, но рискованная функция. Избегайте использования, если это возможно.
Папка src/
Папка src
рекомендуется для размещения всех PHP-классов вашего модуля, таких как Grids, Entities, Forms и т.д.
Контроллеры, основанные на Symfony, должны находиться в папке src/Controller
.
Папка translations/
Папка translations
содержит файлы перевода, позволяющие отображать текст модуля на разных языках.
Папка upgrade/
Папка upgrade
содержит скрипты обновления, которые выполняются при обновлении модуля с предыдущей версии.
Папка vendor/
Папка vendor
обычно содержит библиотеки, импортированные через Composer, а также его автозагрузчик. Эта папка не обязательна.
Папка views/
Папка views
содержит шаблонные файлы вашего модуля (файлы с расширением .tpl
для Smarty или .html.twig
для Twig), а также статические ресурсы, используемые модулем (css, js или изображения). Каждый тип должен располагаться в своих папках: /views/{js, css, img, fonts}
.
В зависимости от ваших потребностей, файлы шаблонов находятся в разных подпапках:
/views/templates/admin
: файлы шаблонов Smarty или Twig, используемые контроллерами административной панели модуля./views/templates/front
: файлы шаблонов Smarty, используемые контроллерами фронтальной части модуля./views/templates/hook
: файлы шаблонов Smarty, используемые hooks модуля.
С версии 1.7.3 вы можете переопределять виды административной панели, размещая файлы в этой папке.
Файл config.xml
Файл config.xml
содержит кэшированную копию свойств из главного класса модуля для оптимизации производительности списка модулей.
Этот файл автоматически генерируется PrestaShop при установке модуля, если он еще не существует. Полезно предоставлять его в вашем релизе, так как это позволит вашим скриптам обновления выполняться сразу после загрузки архива.
<?xml version="1.0" encoding="UTF-8" ?>
<module>
<name>mymodule</name>
<displayName><![CDATA[My module]]></displayName>
<version><![CDATA[1.0]]></version>
<description><![CDATA[Description of my module.]]></description>
<author><![CDATA[Author name]]></author>
<tab><![CDATA[front_office_features]]></tab>
<confirmUninstall>Are you sure you want to uninstall?</confirmUninstall>
<is_configurable>0</is_configurable>
<need_instance>0</need_instance>
<limited_countries></limited_countries>
</module>
Некоторые детали:
is_configurable
указывает, есть ли у модуля страница конфигурации или нет.need_instance
указывает, необходимо ли создавать экземпляр модуля, когда он отображается в списке модулей. Это может быть полезно, если модуль должен выполнять проверки конфигурации PrestaShop и отображать соответствующее предупреждение.limited_countries
используется для указания стран, к которым модуль ограничен. Например, если модуль должен быть ограничен Францией и Испанией, используйте<limited_countries>fr,es</limited_countries>
.
Файл logo.png
Этот файл значка будет отображаться в списках модулей, если присутствует. Требуется PNG файл размером 32x32 пикселя.
Основной файл mymodule.php
Основной PHP файл модуля должен быть назван так же, как и корневая папка модуля.
Пример для модуля BlockCMS:
- Имя папки:
/modules/blockcms
- Имя основного файла:
/modules/blockcms/blockcms.php
Внешние библиотеки
Все внешние библиотеки должны быть размещены в отдельной папке.
Эта папка может иметь одно из следующих имен: lib
, libs
, libraries
, sdk
, vendor
, vendors
.
Выберите наиболее подходящее имя для вашей библиотеки (ведь libraries
не имеет того же значения, что и sdk
). Вы можете иметь несколько таких папок, например, /sdk
и /vendor
.