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

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


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

Экземпляр модуля может иметь два типа настроек: 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 – 2021 © Amiro.CMS Все права защищены.