Модуль состоит из множества файлов, все они хранятся в папке, имеющей то же имя, что и сам модуль. Эта папка, в свою очередь, хранится в папке /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.
