Выдано 110639 лицензий

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

Модуль для магазина приложений размещается через личный кабинет. Версии модуля размещаются в tar.gz файле следующей структуры:

files — файлы модуля, копируемые в корневую директорию системы управления
- admin
- modules
tmp — директория с временными файлами, которые будут использоваться вашим установщиком module.php
module.php — PHP-файл с логикой установки
module.sql — файл с SQL-запросами
module.xml — файл XML-манифеста

Дополнительно при добавлении в личном кабинете версии модуля допускается указание необязательных PHP и SQL-файлов для текущей версии модуля. В таком случае при установке порядок выполнения будет следующий:

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

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="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 указывает на вид поля:

  • input — поле ввода;
  • select — список, значения списка указываются в value/list
  • textarea — большое текстовое поле;
  • file — файл;
  • siteList — список сайтов системы;
  • shopList — список магазинов текущего сайта;
  • informationsystemList — список информационных систем текущего сайта.

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

Комментарии

  • Без темы

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

    06.11.2015 16:54:58 kad

    Без темы

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

    06.11.2015 17:46:23 HostCMS