2

我有一个像这样的分类词汇类别

  • 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 技能是有限的,我感谢任何帮助,这为我指明了正确的方向。谢谢。

4

1 回答 1

1

解决方案比我想象的要简单。感谢@Clive,
我可以直接保存存储在 $item 中的术语 ID,而无需通过第三个 foreach 循环。

$node->field_kat_return['und'][0]['tid'] = $item;  
于 2012-07-17T23:36:08.443 回答