Создать термин словаря таксономии

03 Янв 2009
Опубликовано VladSavitsky
Задача: 

Нужно в модуле создать термин определенного словаря таксономии в модуле Drupal.

Решение:
Для того, чтобы программно создать термин таксономии в модуле, нужно написать что-то подобное в "_insert"-функции:

$vid = variable_get('node_product_vocabulary', '');   // vocabulary ID is hard coded for this example
  $autoterm = array(
    'name' => $node->title,  // or whatever you want the auto-term to be named
    'parent' => 0,
    'vid' => $vid,
  );
  taxonomy_save_term($autoterm);
  $new_tid = $autoterm['tid'];
  $node->taxonomy[$vid][$tid] = $new_tid;

Использованные материалы

API

Авторы решений:
Версия Drupal:

Комментарии

ЭЭЭЭЭ. Простите я верно понял что это строкой
$tid = (int) db_result(db_query('SELECT MAX(tid) FROM {term_data} WHERE vid = %d', $vid));

вы получаете tid созданного термина?

Если я правильно понял, то этот способ как минимум не корректен тем, что вновь созданный термин не всегда будет иметь максимальный tid в базе term_data

и второе, зачем это велосипед? Когда сама функция taxonomy_save_term($autoterm); возращает tid созданного термина?

taxonomy_save_term($autoterm);
$new_tid = $autoterm['tid'];

Demimurych | Апр 18th, 2009 в 5:59 после полудня

Demimurych, я проверил - так и есть. Массив передаётся по ссылке и функция taxonomy_save_term() создаёт 'tid' в этом массиве. Я пробовал этот вариант, но не помню уже почему у меня не получилось так сделать - может быть терпения не хватило.

Исправил с рецепте.

VladSavitsky | Апр 20th, 2009 в 10:04 утра
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>