Создать термин, зная vid словаря:
$term = (object)array(
'vid' => VID_СЛОВАРЯ,
'name' => 'Название термина',
);
taxonomy_term_save($term);
Создать термин, зная машинное имя словаря:
$vocabulary = taxonomy_vocabulary_machine_name_load('машинное_имя_словаря');
$term = (object)array(
'vid' => $vocabulary->vid,
'name' => 'Название термина',
);
taxonomy_term_save($term);
Создать термин с заранее известным tid, зная vid словаря:
$term = (object)array(
'tid' => TID_ТЕРМИНА,
'vid' => VID_СЛОВАРЯ,
'name' => 'Название термина',
);
db_query("INSERT IGNORE INTO {taxonomy_term_data} (tid) VALUES (?)", array($term->tid));
taxonomy_term_save($term);
Написанное актуально для
Drupal 7
Комментарии
Еще мне кажется надо дополнить, что объект $term дозаполняется новыми данными:
этот код работает если у термина нет полей
В Drupal 7 это легко и просто. А как быть в Drupal 6?
а почему не через новый "абстрактный уровень бд" д7 ? =)
а он ignore делать не умеет
хотя вспомнил что есть db_merge
$term = new stdClass();
$term->name = $name;
$term->vid = $vid;
taxonomy_term_save($term);
return $term->tid;
со всеми возможными parent description
Здравствуйте. Делаю по такому принципуЖ
$term = new stdClass();
$term->name = $name;
$term->vid = $vid;
taxonomy_term_save($term);
return $term->tid;
В базе все появляется но в списке терминов словаря не отображаются. Подскажите вчем может быть проблема..
Присоединяюсь к последнему комментарию.
Термины создаются, но в словаре не отображаются.
Ответ на два последних комментария:
Добавлял я термины несколько другим способом, т.е. не "taxonomy_term_save", а напрямую через api друпала по работе с его базой, но суть в целом одна и та же.
Дело в том, что при добавлении терминов в таблицу taxonomy_term_data необходимо так же добавить данные в таблицу taxonomy_term_hierarchy. Мне по крайне мере помогло и все заработало :)
продолжение кода)
не советуйте плохого — taxonomy_term_save() самостоятельно добавляет данные в taxonomy_term_hierarchy
Добавляет, если прописать parent, иначе нехочет
Добавить комментарий