Сохранить программно вложенный термин таксономии сразу

приведенный ниже код позволяет создавать термины таксономии с помощью Drupal API.

$terms = array(   

      $term1 = array(
      'name' => 'term name', 
      'description' => '', 
      'parent' => array(0), 
      'vid' => $vid,
       ),

      $term2 = array(
      'name' => 'term name', 
      'description' => '', 
      'parent' => array(0), 
      'vid' => $vid,
       ),

      $term3 = array(
      'name' => 'term name', 
      'description' => '', 
      'parent' => array(0), 
      'vid' => $vid,
       ),
);

foreach ($terms as $term) {
$term = (object) $term;
taxonomy_term_save($term);

}

Это хорошо работает для родственных терминов, но что, если мне нужно создать дерево таксономии нестеров? Для этого существует родительский ключ, который должен содержать массив идентификаторов родительских терминов.

Как я узнаю эти идентификаторы до того, как родительские термины будут сохранены в БД?


person ymakux    schedule 18.12.2010    source источник


Ответы (1)


Ключ добавляется к переданному объекту термина taxonomy_term_save (точнее, taxonomy_term_save вызовом drupal_write_record):

$term1 = array(
      'name' => 'term name', 
      'description' => '', 
      'parent' => array(0), 
      'vid' => $vid,
);
$term1 = (object) $term1;
taxonomy_term_save($term1);
echo $term1->tid; // now where did that come from?
person Oswald    schedule 18.12.2010
comment
... но вы разместили тот же код. Мне нужно определить некоторые идентификаторы в «родительском» ключе (например, «parent» = ›array (1, 2, 3)), НО как я могу узнать эти идентификаторы до того, как они будут сохранены в дБ? Мне нужно сохранить ВСЕ вложенное дерево таксономии, а не первые родительские термины, а не дочерние термины. - person ymakux; 18.12.2010
comment
... но я добавил строчку. Эта строка сообщает вам, как получить доступ к ключу только что созданного вами термина. Используйте этот ключ, чтобы добавить дочерние термины. - person Oswald; 18.12.2010
comment
Именно это. Вы не можете узнать идентификатор термина, который вам нужно будет использовать в качестве родительского термина, пока вы не сохраните сначала родительский термин. - person Dave Reid; 19.12.2010