Центр документации
Карта сайта


Новая документация

Настройка платежных систем
Настройка способа оплаты КупиВкредит
Настройка способа оплаты Acquiro
Настройка способа оплаты AvisoSMS

Обновленная документация 

Разработчикам (API)
Руководство пользователя

Настройки модуля

Экземпляр модуля может иметь два типа настроек: properties - это неизменяемые системные настройки и options - это настройки, значение которых может быть изменено вручную или из кода.

Установка настроек properties и options определяется в файлах "_local/modules/declaration/properties.php" и "_local/modules/declaration/options.php" соответственно.

Важно

Эти файлы обновляются автоматически при установке/удалении дистрибутивов, код генерируется из соответствующих заготовок.
Ручное внесение изменений в эти файлы не допустимо, более того, оно никак не повлияет на текущие значения настроек, однако может привести к сбою при обновлении системы или установке/удалении модулей.

Properties

Данные настройки можно приравнять к константам экземпляра модуля, их значения могут быть обновлены только при обновлении системы или переустановке экземпляра модуля.

Пример набора настроек модуля inst_sample

// [inst_sample] {
if($oDeclarator->isRegistered('inst_sample')){
    $oMod = $oDeclarator->getModule('inst_sample');
 
    // Позиция экземпляра модуля в меню панели управления
    $oMod->setProperty('taborder', $oDeclarator->getTabOrder('inst_sample'));
 
 
    // Спецблоки экземпляра модуля
    $oMod->setProperty('spec_blocks', array('spec_small_inst_sample'));
 
 
    // Поддерживаемые типы запросов публичной части (plain, ajax)
    $oMod->setProperty('front_request_types', array('plain'));
 
    // Пользовательская настройка
    $oMod->setProperty('user_defined_property', 'user_defined_value');
}
// } [inst_sample]

После установки экземпляра модуля, его настройки типа property становятся доступны из кода в любом модуле системы.

Чтение настроек:

// Возвращает true, если экземпляр с идентификатором $modId имеет настройку $propertyName, иначе false
bool AMI::issetProperty($modId, $propertyName);
 
// Получает значение настройки $propertyName экземпляра модуля с идентификатором $modId
mixed AMI::getProperty($modId, $propertyName);
 
// Возвращает true, если экземпляр с идентификатором $modId имеет настройку $propertyName, значение которой соответствует true, иначе возвращает false
// Технически соответствует конструкции AMI::issetProperty($modId, $propertyName) && (getProperty($modId, $propertyName) === true)
bool AMI::issetAndTrueProperty($modId, $propertyName);

 

options

Эти настройки модуля могут быть изменены вручную через диалог настройки модуля или модуль "Настройка системы". Так же имеется возможность манипуляции с данными настройками из кода модуля.

При установке экземпляра модуля происходит добавление настроек со значениями по-умолчанию.

Пример добавления настроек экземпляру с идентификатором inst_sample:

// [inst_sample] {
if($oDeclarator->isRegistered('inst_sample')){
    $oMod = $oDeclarator->getModule('inst_sample');
 
    $oMod->setOption('option_bool', false);
    $oMod->setOption('option_uint', 0);
    $oMod->setOption('option_sint', -5);
    $oMod->setOption('option_float', 0.01);
    $oMod->setOption('option_char', 'some string');
    $oMod->setOption('option_text', "text containing\nline\nbreaks");
    $oMod->setOption('option_email', 'mail.1@domain.com,mail.2@domain.com');
    $oMod->setOption('option_enum', 'second');
    $oMod->setOption('option_enum_multi1', array('first', 'third'));
    $oMod->setOption('option_enum_multi2', array());
    $oMod->setOption('option_date_period', '-1 month');
    $oMod->setOption('option_date_period_positive', '1 hour');
    $oMod->setOption('option_date_period_negative', '-1 minute');
}
// } [inst_sample]


Для того чтобы настройки появились в окне настроек экземпляра модуля, необходимо задать правила отображения настроек. Это делается в файле "_local/modules/declaration/rules.php" 

// [inst_sample] {
if($oDeclarator->isRegistered('inst_sample')){
    $oMod = $oDeclarator->getModule('inst_sample');
    /**
     * Splitter:
     *
     * $aOptions parameter is always AMI_Module::RLC_NONE.
     * $defaultValue parameter is TRUE or FALSE.
     */
    $oMod->addRule(
        'spl_custom_options',
        AMI_Module::RLT_SPLITTER
    );
    /**
     * Boolean option:
     *
     * - $aOptions parameter is always AMI_Module::RLC_NONE.
     * - $defaultValue parameter is TRUE or FALSE.
     */
    $oMod->addRule(
        'option_bool',
        AMI_Module::RLT_BOOL,
        AMI_Module::RLC_NONE,
        FALSE
    );
    /**
     * Unsigned integer:
     *
     * - $aOptions parameter is array containing optional borders
     * for possible value or AMI_Module::RLC_NONE.
     * - $defaultValue parameter is unsigned integer.
     */
    $oMod->addRule(
        'option_uint',
        AMI_Module::RLT_UINT,
        array('min' => 0, 'max' => 10),
        0
    );
    /**
     * Signed integer:
     *
     * - $aOptions parameter is array containing optional borders
     * for possible value or AMI_Module::RLC_NONE.
     * - $defaultValue parameter is signed integer.
     */
    $oMod->addRule(
        'option_sint',
        AMI_Module::RLT_SINT,
        array('min' => -10, 'max' => 10),
        -5
    );
    /**
     * Float number:
     *
     * - $aOptions parameter is array containing optional borders
     * for possible value (i. e. array('min' => -10, 'max' => 10)) or AMI_Module::RLC_NONE.
     * - $defaultValue parameter is float number.
     */
    $oMod->addRule(
        'option_float',
        AMI_Module::RLT_FLOAT,
        AMI_Module::RLC_NONE,
        0.01
    );
    /**
     * String:
     *
     * - $aOptions parameter is array containing optional borders
     * for possible value or AMI_Module::RLC_NONE.
     * - $default Value parameter is float number.
     */
    $oMod->addRule(
        'option_char',
        AMI_Module::RLT_STRING,
        array('length_min' => 3, 'length_max'=> 255),
        'some string'
    );
    /**
     * Text:
     *
     * - $aOptions parameter is AMI_Module::RLC_NONE always.
     * - $defaultValue parameter is string.
     */
    $oMod->addRule(
        'option_text',
        AMI_Module::RLT_TEXT,
        AMI_Module::RLC_NONE,
        "text containing\nline\nbreaks"
    );
    /**
     * Email address:
     *
     * - $aOptions parameter is AMI_Module::RLC_NONE always.
     * - $defaultValue parameter is string containing comma separated email addresses.
     */
    $oMod->addRule(
        'option_email',
        AMI_Module::RLT_EMAIL,
        AMI_Module::RLC_NONE,
        'mail.1@domain.com,mail.2@domain.com'
    );
    /**
     * Array displayed like selectbox:
     *
     * - $aOptions parameter is array.
     * - $defaultValue parameter is int|string containing default value.
     *
     * @see _local/modules/distrib/configs/ami_clean/ami_sample/rules/--modId--_rules_values.lng
     */
    $oMod->addRule(
        'option_enum',
        AMI_Module::RLT_ENUM,
        array('first', 'second', 'third'),
        'second'
    );
    /**
     * Array:
     *
     * - $aOptions parameter is array.
     * - $defaultValue parameter is array containing default array value.
     *
     * @see _local/modules/distrib/configs/ami_clean/ami_sample/rules/--modId--_rules_values.lng
     */
    $oMod->addRule(
        'option_enum_multi1',
        AMI_Module::RLT_ENUM_MULTI,
        array('first', 'second', 'third'),
        array('first', 'third')
    );
    /**
     * Array (can be empty):
     *
     * - $aOptions parameter is array, one of elememts is RLC_EMPTY.
     * - $defaultValue parameter is array containing default array value.
     *
     * @see _local/modules/distrib/configs/ami_clean/ami_sample/rules/--modId--_rules_values.lng
     */
    $oMod->addRule(
        'option_enum_multi2',
        AMI_Module::RLT_ENUM_MULTI,
        array('first', 'second', 'third', AMI_Module::RLC_EMPTY),
        array()
    );
    /**
     * Date/time interval:
     *
     * - $aOptions parameter is AMI_Module::RLC_NONE always.
     * - $defaultValue parameter is string containing period
     * in PHP strtotime() function format.
     */
    $oMod->addRule(
        'option_date_period',
        AMI_Module::RLT_DATE_INTERVAL,
        AMI_Module::RLC_NONE,
        '-1 month'
    );
    /**
     * Date/time interval:
     *
     * - $aOptions parameter is AMI_Module::RLC_NONE always.
     * - $defaultValue parameter is string containing period
     * in PHP strtotime() function format.
     */
    $oMod->addRule(
        'option_date_period_positive',
        AMI_Module::RLT_DATE_INTERVAL_POS,
        AMI_Module::RLC_NONE,
        '1 hour'
    );
    /**
     * Date/time interval:
     *
     * - $aOptions parameter is AMI_Module::RLC_NONE always.
     * - $defaultValue parameter is string containing period
     * in PHP strtotime() function format.
     */
    $oMod->addRule(
        'option_date_period_negative',
        AMI_Module::RLT_DATE_INTERVAL_NEG,
        AMI_Module::RLC_NONE,
        '-1 minute'
    );
 
    // Finalize rules description
    $oMod->finalize();
}
// } [inst_sample]

 

Чтение и установка настроек:

// Возвращает true, если экземпляр с идентификатором $modId имеет настройку $optionName, иначе false
bool AMI::issetOption($modId, $optionName);
  
// Получает значение настройки $optionName экземпляра модуля с идентификатором $modId
mixed AMI::getOption($modId, $optionName);
  
// Возвращает true, если экземпляр с идентификатором $modId имеет настройку $propertyName, значение которой соответствует true, иначе возвращает false
// Технически соответствует конструкции AMI::issetOption($modId, $optionName) && (getOption($modId, $optionName) === true)
bool AMI::issetAndTrueOption($modId, $optionName);
 
// Устанавливает настройке $optionName экземпляра с идентификатором $modId значение $optionValue
// Значение будет установлено на период работы данного php-скрипта
mixed AMI::setOption($modId, $optionName, $optionValue);

Важно

Настройки типа properties/options в легком окружении доступны при исполнении кода модуля, в полном окружении доступны настройки всех инсталлированных модулей.

См. также генератор решений

Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API) Документация для скачивания
 2000 – 2011 © Amiro.CMS Все права защищены.