Как создавать термины при установке крючка, если словари таксономии крюка по умолчанию используются в том же модуле?
Я пытаюсь создать термины таксономии в модуле, который предоставляет словарь, необходимый для создания этих терминов.
Проблема, с которой я столкнулся, заключается в том, что словарь недоступен при установке.
В моем модуле реализованы функции hook_taxonomy_default_vocabularies. Я хотел бы создать эти термины в hook_install.
Каков наилучший способ создания этих терминов?
5
1 answers
Хотя вы можете использовать hook_install(), лучше всего использовать hook_enable(), чтобы проверить, существует ли словарь, и, если нет, создать его программно:
$vocabularies = taxonomy_vocabulary_get_names();
$pos = array_search('my_vocabulary', $vocabularies);
if ($pos !== FALSE) {
// its a keyed array so the $vid is actually $pos
$vid = $pos;
} else {
// arrays are more convenient to initialize
$vocabulary = array(
'name' => t('My Vocabulary'),
'machine_name' => 'my_vocabulary',
'description' => t('My description'),
'hierarchy' => 1,
'module' => 'your_module', // or nothing
'weight' => 1
);
// argument must be an object
$vocabulary = (object) $vocabulary;
taxonomy_vocabulary_save($vocabulary);
// horray, we have a vid now
$vid = $vocabulary->vid;
}
// now that the vocab exists and you know the $vid, create your terms
// ...
4
Author: Alex Weber, 2011-04-19 23:07:07