Компонент NodusDicts: Словари Нодуса
Основной функционал компонента реализует возможность создания и управления (настройка, удаление созданных с помощью этого компонента) словарей таксономии через API и интерфейс административной части сайта (админки).
Компонент реализован как расширение компонента Nodus, поэтому требуется его установка.
Работа через интерфейс административной части сайта
После установки и подключения компонента на стандартной странице списка словарей появится кнопка «Добавить новый словарь». После нажатия откроется форма создания нового словаря.
Форма позволяет:
- указать название и мнемокод словаря (в отличие от обычного словаря, для этого строго необходимо указывать мнемокод).
- указать тип материала и поле для выборки данных (из этих двух полей будет составлена строка, возвращаемая методом select_by данного словаря).
- признаки древовидности, многоязычности и проч., которые будут использоваться соответствующими методами таксономии/
- на вкладке Поля описать набор дополнительных полей терминов словаря (в формате CMS.Fields) и набор вкладок формы редактирования термина этого словаря.
После сохранения словаря он появится в списке и его можно использовать как обычно. Также, напротив редактируемых словарей будут отображаться элементы управления для редактирования и удаления словаря.
Работа через API
При подключении компонента становится доступен маппер nodus_dicts, который и отвечает за динамически создаваемые словари. Рaссмотрим пример:
$dict = CMS::orm()->nodus_dicts->make_entity(); $dict->published = true; $dict->title = 'Мой супер словарь'; $dict->mnemocode = 'my_super_dict'; $dict->field('fields')->set(array( 'super_field' => array( 'type' => 'input', 'sqltype' => 'varchar(255)', 'tab' => 'common', 'caption' => 'Моё супер поле', ), )); $dict->save(); CMS::component('Nodus')->service('taxonomy')->reset_cache(); $dict->register(); // Далее можно пользоваться словарём как обычно $taxonomy = Component_Nodus::taxonomy($dict->mnemocode); $taxonomy->term('Test', true);
Единственное, на что стоит обратить внимание - вызовы CMS::component('Nodus')->service('taxonomy')->reset_cache() - для очистки кэша таксономии и $dict->register() - для указания Нодусу, что появился новый словарь.
Конфигурационные настройки компонента
В файле component.php можно изменить поведение при удалении словаря.
//app/components/NodusDicts/config/component.php return array( ... 'remove_terms_on_dict_delete' => true, );
где
- remove_terms_on_dict_delete - если установлено в true, то при удалении словаря, все его термины будут удалены.
В случае необходимости, можно связать любой из словарей с произвольным классом (например, для реализации каких-либо обработчиков добавления/удаления терминов и т.п.). Для этого в файле taxonomies.php в массив нужно добавить строку, ключом которой будет код словаря, а значением - имя модуля таксономии.
//app/components/NodusDicts/config/taxonomies.php return array( 'slovar' => 'Component.MyComponent.MyClass', );