Модуль для магазина приложений размещается через личный кабинет. Версии модуля размещаются в tar.gz
файле следующей структуры:
files — файлы модуля, копируемые в корневую директорию системы управления
- admin
- modules
tmp — директория с временными файлами, которые будут использоваться вашим установщиком module.php
module.php — PHP-файл с логикой установки
module.sql — файл с SQL-запросами
module.xml — файл XML-манифеста
update.php — PHP-файл с логикой обновления для новой версии
update.sql — файл с SQL-запросами обновления для новой версии
Дополнительно при добавлении в личном кабинете версии модуля допускается указание необязательных PHP и SQL-файлов для текущей версии модуля. В таком случае при установке порядок выполнения будет следующий:
Файлы обновления update.php и update.sql будут выполняться только при установке обновления модуля через стандартный модуль "Обновления".
XML-манифест предоставляет сведения о модуле, например:
<?xml version="1.0" encoding="UTF-8"?> <module> <options> <create_module>0</create_module> </options> <fields> <field type="input"> <caption>Название организации</caption> <value>Моя компания</value> <name>company_caption</name> </field> <field type="file"> <caption>Логотип</caption> <value></value> <name>logo</name> <path>/images/site50/logo.jpg</path> <extension>jpg</extension> <max_width>369</max_width> <max_height>181</max_height> </field> <field type="select"> <caption>Список</caption> <value> <list value="10">Значение 10</list> <list value="20">Значение 20</list> </value> <name>select</name> </field> <field type="select"> <caption>Список с множественным выбором</caption> <multiple>true</multiple> <size>3</size> <value> <list value="10">Значение 10</list> <list value="20">Значение 20</list> </value> <name>select</name> </field> <field type="checkbox"> <caption>Чекбокс</caption> <name>check1</name> </field> <field type="radiogroup"> <caption>Радиогруппа</caption> <name>radio1</name> <value> <list value="10">Значение 10</list> <list value="20">Значение 20</list> </value> </field> <field type="input"> <caption>Электронная почта</caption> <value>admin@localhost.ru</value> <name>company_email</name> </field> <field type="input"> <caption>Адрес</caption> <value>ул. Пушкина, д. 123, оф. 456 г. Москва, 101000</value> <name>company_address</name> </field> <field type="input"> <caption>Телефон</caption> <value>+7 (495) 321-456-7</value> <name>company_phone</name> </field> </fields> </module>
Секция <options>
может содержать необязательный флаг <create_module>
, указывающий на необходимость создать модуль в списке модуль (0 — не создавать, 1 — создавать). Создание модуля не следует указывать при добавлении решения, которое может устанавливать несколько раз на одну и ту же систему, например, шаблон сайта, платежная система и т.п.
Секция <fields>
содержит массив полей, выводимых пользователю при установке и далее доступных установщику в файле module.php
.
Атрибут type указывает на вид поля:
* Опции доступны с версии 6.9.3.
В файле module.php
получить путь к директории и введенные пользователем данные можно следующим образом:
<?php
// Путь к временной директории, в которую распакованы файлы модуля
$tmpDir = Market_Controller::instance()->tmpDir . DIRECTORY_SEPARATOR;
// Массив значений, введенных пользователем
$aOptions = Market_Controller::instance()->options;
// Текущий язык
$sLng = 'ru';
// Массив возможных языков
$aPossibleLanguages = array('en', 'ru');
// Используется для автоматического добавления суффиксов к именам XSL-шаблонов и типовых динамических страниц
$sSitePostfix = '';
// Массив замен
$aReplace = array();
foreach ($aOptions as $optionName => $optionValue)
{
$aReplace['%' . $optionName . '%'] = $optionValue;
}
$Install_Controller = Install_Controller::instance();
$Install_Controller->setTemplatePath($tmpDir);
При загрузке файла с указанными подстановками быстро провести замену подстановок:
$sContent = $Install_Controller->loadFile($tmpDir . "tmp/myfile.htm", $aReplace);
Файл module.php
для установки шаблона создается автоматически с помощью файла create_template.php
, подробнее.