Какова функция, используемая для создания терминов таксономии в Drupal из кода?
Почему бы не проверить документы API? Ответ прямо там. http://api.drupal.org/api/function/taxonomy_save_term/6
Модуль, который я писал, нуждался в определенном словаре с иерархическими терминами. Я написал эту функцию, чтобы сохранить условия:
<?php /** * Save recursive array of terms for a vocabulary. * * Example: * <code><?php * $terms = array( * 'Species' => array( * 'Dog', * 'Cat', * 'Bird' ), * 'Sex' => array( * 'Male', * 'Female' ) ) * _save_terms_recursive( $vid, $terms ); * </code> * * @param int $vid Vocabulary id * @param array $terms Recursive array of terms * @param int $ptid Parent term id (generated by taxonomy_save_term) */ function _save_terms_recursive( $vid, &$terms, $ptid=0 ) { foreach ( $terms as $k => $v ) { // simple check for numeric indices (term array without children) $name = is_string( $k ) ? $k : $v; $term = array( 'vid' => $vid, 'name' => $name, 'parent' => $ptid ); taxonomy_save_term( $term ); if ( is_array( $v ) && count( $v ) ) _save_terms_recursive( $vid, $terms[ $k ], $term[ 'tid' ] ); } }
Для Drupal 7 это таксономия_терм_save () , кстати.
Версия Drupal 7 выглядит так:
/** * Save recursive array of terms for a vocabulary. * * Example of an array of terms: * $terms = array( * 'Species' => array( * 'Dog', * 'Cat', * 'Bird' ), * 'Sex' => array( * 'Male', * 'Female' ) ); * * @param int $vid Vocabulary id * @param array $terms Recursive array of terms * @param int $ptid Parent term id (generated by taxonomy_save_term, when =0 then no parent) * * taxonomy_term_save ($term) gives back saved tid in $term * **/ function _save_terms_recursively( $vid, &$terms, $ptid=0 ) { foreach ( $terms as $k => $v ) { // simple check for numeric indices (term array without children) $name = is_string( $k ) ? $k : $v; $term = new stdClass(); $term->vid = $vid; $term->name = $name; $term->parent = $ptid; taxonomy_term_save( $term ); if ( is_array( $v ) && count( $v ) ) { _save_terms_recursively( $vid, $terms[ $k ], $term->tid ); } }