我有像这样的分类词汇 kategorie :
词汇表有一个自定义字段,ID如下:957214d2-ce39-423d-aeb1-32f2e8b972f6,所以每个术语和父词都有一个ID(不是tid!)。
我的内容类型包含引用的分类字段 kategorie 。还有一个名为 kategorieTempId 的数组字段,其值与kategorie-taxonomy中的值相同。该数组中的ID数表示术语和父术语的层次结构顺序。所以,如果节点应该在kategorie -Kat01 - > Child01, kategorieTempId 中有两个ID,一个用于父项,一个用于子项。
现在我需要获取子术语的ID,而不是从词汇表中获取分类术语并将其写入引用的术语域。
到目前为止我做了什么:
设置一个在保存节点之前触发的规则,使用 按属性获取实体 的操作将词汇表中的分类术语从数组中获取。然后我添加一个操作 执行自定义PHP代码 来查找子tid,并将其写入名为 katReturn 的字段中。
这是我使用的代码(我是一个完全的php-beginner,我不知道,如果这是一种优雅的方式,但是它有效):
$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技能是有限的,我感谢任何帮助,这指向了正确的方向。感谢名单。
答案 0 :(得分:1)
解决方案比我想象的要简单。感谢@Clive
我可以直接保存存储在$ item中的term-id,而无需经过第三个foreach循环。
$node->field_kat_return['und'][0]['tid'] = $item;