Компонент 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',
);
20.01.2015
Все статьи