Создание модуля для магазина приложений

Модуль для магазина приложений размещается через личный кабинет. Версии модуля размещаются в 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-файлов для текущей версии модуля. В таком случае при установке порядок выполнения будет следующий:

  1. База данных из описания версии модуля.
  2. PHP из описания версии модуля.
  3. База данных из module.sql
  4. PHP из module.php

Файлы обновления update.php и update.sql будут выполняться только при установке обновления модуля через стандартный модуль "Обновления".

XML-манифест module.xml

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

В файле 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 для установки шаблонов сайта

Файл module.php для установки шаблона создается автоматически с помощью файла create_template.php, подробнее.

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Без темы

    module.xml может быть пустым?

    06.11.2015 16:54:58
    kad

    Без темы

    Его может не быть, но в случае, если не нужно создавать запись о модуле в таблице модулей.

    06.11.2015 17:46:23
    hostcms