Ошибка в программном создании таксономии в drupal

Я получаю приведенную ниже ошибку при создании словаря таксономии и терминов, используя следующий код

FieldException: попытка создать экземпляр поля field_my_custom_vocab002, который не существует или в настоящее время неактивен. в field_create_instance () (строка 476 из C: \ wamp \ www \ pur_theme \ modules \ field \ field.crud.inc).

Я проверил словарный запас, и он создан, проблема только с созданием термина

<?php

$new_vocab = (object) array(
'name' => 'My custom vocabulary002',
'description' => 'Test',
'machine_name' => 'my_custom_vocab002',
);
taxonomy_vocabulary_save($new_vocab);

$vocab = taxonomy_vocabulary_machine_name_load('my_custom_vocab002');

$term1 = (object) array(
'name' => 'Term 1',
'description' => 'This is term 1',
'vid' => $vocab->vid,
);

taxonomy_term_save($term1);

Что / где я не прав?

0

Решение

Я думаю, это потому, что вы пытаетесь создать термин с большим количеством полей, чем два основных (name и vid). У вас есть поле «описание» в дополнение.

Попробуйте этот код вместо этого:

$term = new stdClass();
$term->name = 'Term 1';
$term->vid = $vocab->vid;
$term->field_description[LANGUAGE_NONE][0]['value'] = 'This is term 1';
taxonomy_term_save($term);

Источник: http://www.lightrains.com/blog/programmatically-create-taxonomy-term-drupal

0

Другие решения

Я нашел единственное решение для этого было создать поле, которое он ищет, прежде чем создавать словарь. Лично я сделал это с помощью пользовательской функции:

function MY_MODULE_create_new_taxonomy($taxonomy_name, $taxonomy_machine_name, $taxonomy_description){

//Add field you know is going to cause trouble
$field = array(
'field_name' => 'field_'.$taxonomy_machine_name,
'type' => 'text',
'label' => 'Label'
);

field_create_field($field);

//create the vocab
$new_vocabulary = new stdClass();
$new_vocabulary->name = $taxonomy_name;
$new_vocabulary->machine_name = $taxonomy_machine_name;
$new_vocabulary->description = t($taxonomy_description);
$new_vocabulary->module = 'taxonomy';

taxonomy_vocabulary_save($new_vocabulary);

}
0

По вопросам рекламы [email protected]