[英]Error in Programmatically creating Taxonomy in drupal
使用以下代碼構建分類詞匯和術語時出現以下錯誤
FieldException:嘗試創建字段field_my_custom_vocab002的實例,該實例不存在或當前處於非活動狀態。 在field_create_instance()中(C:\\ wamp \\ www \\ pur_theme \\ modules \\ field \\ field.crud.inc的第476行)。
我檢查了詞匯表並創建了它,問題僅在於術語創建
<?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);
我在哪里錯了?
我認為這是因為您嘗試創建的術語的字段比2個基本字段(名稱和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
我發現唯一的解決方案是在創建詞匯表之前先創建要查找的字段。 我個人使用自定義函數來完成此操作:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.