簡體   English   中英

在Drupal中以編程方式創建分類法時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM