Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal:使用规则和自定义php代码编写分类法引用字段_Php_Drupal 7_Drupal Rules - Fatal编程技术网

Drupal:使用规则和自定义php代码编写分类法引用字段

Drupal:使用规则和自定义php代码编写分类法引用字段,php,drupal-7,drupal-rules,Php,Drupal 7,Drupal Rules,我有一个分类词汇kategorie如下: Kat01 儿童01 儿童02 Kat02 儿童01 儿童02 词汇表有一个ID如下的自定义字段:957214d2-ce39-423d-aeb1-32f2e8b972f6,因此每个术语和父术语都有一个ID(不是tid!) 我有一个带有引用分类字段的内容类型kategorie。还有一个名为kategorieTempId的数组字段,其值与kategorie分类法中的值相同。该数组中的ID数表示术语和父术语的层次顺序。因此,如果节点应位于kateg

我有一个分类词汇kategorie如下:

  • Kat01
    • 儿童01
    • 儿童02
  • Kat02
    • 儿童01
    • 儿童02
词汇表有一个ID如下的自定义字段:957214d2-ce39-423d-aeb1-32f2e8b972f6,因此每个术语和父术语都有一个ID(不是tid!)

我有一个带有引用分类字段的内容类型kategorie。还有一个名为kategorieTempId的数组字段,其值与kategorie分类法中的值相同。该数组中的ID数表示术语和父术语的层次顺序。因此,如果节点应位于kategorie-Kat01->Child01中,则在kategorieTempId中会有两个ID,一个用于父项,一个用于子项。
现在我需要获取子术语的ID,然后从词汇表中获取分类术语并将其写入引用的术语字段

到目前为止我所做的:
设置一条规则,该规则在保存节点之前被激发,使用操作按属性获取实体将分类术语从词汇表中获取到数组中。然后,我添加了一个操作执行自定义PHP代码,以查找子tid并将其写入名为katreurn的字段中
下面是我使用的代码(我完全是php初学者,我不知道这是否是一种优雅的方式,但它可以工作):

现在我知道了子术语的tid,我想把它写进referencetaxonomy字段,但我不明白。我尝试的代码是:

foreach ($kat_id_fetched as $kat) {
  if ($kat->tid == $returned_kat) {
    $node->field_kategorie[] = $kat;
    break;
  };
};

我希望,我清楚地表明了我想要什么。正如我之前所说,我的php技能有限,我非常感谢任何帮助,这为我指明了正确的方向。Thanx.

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

$node->field_kat_return['und'][0]['tid'] = $item;  

术语引用的字段列是
tid
,因此您的代码应该是
$node->field_kat_return['und'][0]['tid']=$item$node->field_kat_return['und'][0]['tid'] = $item;