Практически любой проект требует хранения и использования внешних ассоциативных параметров, таковыми могут являться идентификаторы инфоблоков, групп пользователей и множество других по усмотрению разработчика. Появление “магических” цифр в коде является нежелательной практикой и очень затрудняет поддержку такого проекта. В большинстве случаев параметры определяются в виде констант или, что еще хуже, глобальных переменных в подключаемом файле init.php. Такое решение не является наглядным и увеличивает эффект “черного ящика”, что в свою очередь повышает зависимость заказчика от разработчика при дальнейшем развитии проекта.
Решение “Настройки проекта” позволяет устанавливать различные параметры через привычный web-интерфейс и легко получать их значения через api использования модуля, что является несомненным плюсом удобства использования и “прозрачности” проекта.
[spoiler]
Разработчиком определяется список используемых полей и их значений. Для удобного использования и редактирования значений поля необходимо установить ряд атрибутов для него. Таковыми являются:
имя - название в общем списке настроек
символьный код - строка идентифицирующие поле, используется в коде при получении значения
сортировка - порядок отображения в общем списке
признак (флаг) множественности - указывает что значением поля будет являться список (массив) или скалярное величина
тип - принадлежность поля к определенной формализации
значение по умолчанию - хранимое значение поля, является больше подсказкой при редактировании действующего значения
для поля типа “список” необходимо определить множество вариантов, которые определяются при настройке атрибутов.
Настройка метаданных поля:
На данный момент поддерживаются следующие типы полей:
число
строка
флаг (да/нет)
список
инфоблок - вариантами значений становится список активных информационных блоков
группа пользователей
пользователь
пользовательский (“кастомный”)
Использование.
После установки модуля появится страница административной части по адресу “Настройки” - “Настройки проекта” (в самом низу меню). Где необходимо определить список полей и их значений.
Получение значения поля определяется следующим методом: WS_PSettings::getFieldValue($name, $default = null); где $name - символьный код поля определенный в настроках, $defult - значение которое вернет метод, если поля с таким кодом не существует.
В процессе разработки могут понадобиться использование “списочных” типов непредусмотренных при разработке модуля (все требуемые варианты предусмотреть невозможно и в свою очередь накладно как по времени разработки так и по количеству обращений к базе данных). Установка при этом списочных значений вручную теряет свою актуальность, так же необходимо для нескольких полей с одинаковыми вариантами применять одинаковые настройки списка фактически их копируя. Для этого случая предусмотрено событие “'OnBuildTypes'”, в обработчиках которого можно добавлять собственные вычисляемые варианты списочных полей. Результатом выполнения обработчика должен являться ассоциативный массив следующей структуры:
<?php
array(
//Название типа, будет отображено в списке выбора типов
‘name’ => ‘Список валют’,
//Варианты значений списка, где ключами являются сами значения выбора, а
//значениями массива - названия отображаемые в списке вобра при вводе значения
‘variants’ => array(
‘RUB’ => ‘Рубль’,
‘USD’ => ‘Доллар’,
‘EUR’ => ‘Евро’
)
);
Пример использования: Обработчик должен быть подключен до исполнения контентной части административной страницы, желательно определить его в файле init.php. Определение обработчика (init.php):
Теперь при редактировании настроек появится определенный пользовательский тип.
Где определены “кастомные” варианты выбора.
Получение значения в коде для такого поля не чем не отличается от остальных (по символьному коду).
На данный момент существует два вида прав доступа к настройкам, это запрет и полный доступ. В дальнейшем планируется дополнительное разграничение прав, такие как изменение (редактирование значений полей без доступа к настройкам) и чтение (без возможности изменений).