我有一个像这样的分类词汇类别:
- Kat01
- 儿童01
- 儿童02
- 卡特02
- 儿童01
- 儿童02
词汇表有一个自定义字段,其 ID 如下:957214d2-ce39-423d-aeb1-32f2e8b972f6,因此每个术语和父术语都有一个 ID(这不是 tid!)。
我有一个带有引用分类字段kategorie的内容类型。还有一个名为kategorieTempId的数组字段,其值与 kategorie-taxonomy 中的值相同。该数组中的 ID 数量表示术语和父术语的层次顺序。因此,如果节点应该位于 kategorie -Kat01 -> Child01 中,则 kategorieTempId 中将有两个 ID ,一个用于父项,一个用于子项。
现在我需要获取子术语的 ID,而不是从词汇表中获取分类术语并将其写入引用的术语字段。
到目前为止我所做的:
设置一个规则,在保存节点之前触发该规则,使用操作Fetch entity by property将分类术语从词汇表中获取到数组中。然后我添加一个动作Execute custom PHP code来查找子 tid 并将其写入一个名为katReturn的字段中。
这是我使用的代码(我是一个完全的 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 技能是有限的,我感谢任何帮助,这为我指明了正确的方向。谢谢。