我有一個分類詞彙表kategorie這樣分類的參考場:Drupal的:編寫使用規則和定製的PHP代碼
- Kat01
- Child01
- Child02
- Kat02
- Child01
- Child02
詞彙具有這樣ID的自定義字段:957214d2-ce39-423d-aeb1-32f2e8b972f6,所以每一個術語和父詞條具有ID(其不是tid!)。
我有一個引用分類法字段的內容類型分類。也有稱爲kategorieTempId陣列字段,並且該值是像在kategorie-分類法是相同的。該數組中的ID的數量表示術語和父項的分層順序。因此,如果節點應該在kategorie -Kat01 - > Child01,將有兩個ID在kategorieTempId,一個家長,一個孩子的術語。
現在我需要讓孩子長期的ID,比獲得從詞彙的分類項,並將其寫入引用的術語領域。
我做了什麼至今:
建立一個規則,即節約了節點之前發射,使用動作地產取實體獲得從詞彙的分類術語到一個數組。然後,我添加動作執行定製的PHP代碼找孩子的TID,並將其寫入到一個名爲katReturn場。
這裏是codeI使用(我是一個總的PHP初學者,我不知道,如果這是一個優雅的方式來做到這一點,但它的工作原理):
$anzahl = 0; //counter for hierarchy
foreach ($kat_id_fetched as $kat_term) { // fill two arrays
$tid[$anzahl] = $kat_term->tid; // array with termID
$parentTerm_id[$anzahl] = db_query("SELECT {parent} FROM {taxonomy_term_hierarchy} WHERE tid = $kat_term->tid")->fetchField(); // array with parent-termID
++$anzahl;
};
foreach ($tid as $item) { // check if tid is parent
$anzahl = 0;
if (!in_array($item, $parentTerm_id)) {
$kat_child = $item; // if not in parent-array, save tid
$node->field_kat_return['und'][0]['value'] = $item;
break;
};
++$anzahl;
};
所以現在我知道兒童術語的tid,我想將它寫入引用分類法字段,但我不明白。我試試的代碼是:
foreach ($kat_id_fetched as $kat) {
if ($kat->tid == $returned_kat) {
$node->field_kategorie[] = $kat;
break;
};
};
我希望,我明確了我想要的。正如我之前所說,我的PHP技能是有限的,我感謝任何幫助,這指向了正確的方向。感謝名單。
任期參考的字段列是'tid',所以你的代碼應該是'$節點 - > field_kat_return [ 'UND'] [0] [ 'TID'] = $項目;' – Clive 2012-07-16 12:44:30
謝謝爲你的答覆,但我不明白這一點。字段field_kategorie不是引用分類字段。它只是一個幫手字段,它與我所尋找的術語的tid相同。 術語引用字段是field_kategorie。我想把從最後一個foreach循環獲得的分類術語寫入這個領域。 – krabbe 2012-07-16 13:01:20
我的回答有錯誤。當然field_kategorie是引用分類法字段。而field_kat_return是幫手場... – krabbe 2012-07-16 18:31:23