1

我一直在修补这个问题并尝试研究几个小时。我仍然熟悉 Drupal 7 的实体 API,并且一直在尝试使用 PHP,但无济于事——我认为由于我疲惫的大脑过度思考,我错过了一些非常明显的东西。

我有两种内容类型,CT1 和 CT2。CT1 有一个可以保存多个字段集合值的字段。在此字段集合 (field_coll_ct2) 中,字段之一 (field_ct2_ref) 是对内容类型 CT2 节点的实体引用。

现在,当我查看 CT1 类型的单个节点时,我想要一个块视图,它将显示该 CT1 节点的 field_coll_ct2 字段集合字段中引用的所有 CT2 节点。

我的主要方法是在同类关系的非字段集合字段上工作,它是在 Content:NID 上的视图中添加上下文过滤器。从那里开始,由于它是一个块,并且 URL 参数传递是不可能的(在 7-8 种不同的内容类型之间存在如此多的这种关系,在每个节点的不同元组中,使用 URL 绝对不可行用于参数传递)我将其设置为“PHP”类型的“提供默认值”和“允许多个值”,这就是它变得毛茸茸的地方。

我需要获取当前查看节点的 field_coll_ct2 字段集合中的所有 field_ct2_ref 实体引用。我试过使用:

$wrapper = entity_metadata_wrapper($entity_type, $entity);
return $wrapper->field_coll_ct2->field_ct2_ref->value();

或者

$node=menu_get_object(); 
foreach ($node->field_coll_ct2['und'] as $record) 
{ 
$values[]= $record['value'];
} 
foreach($values as $val){
$tgts[]=$val['every'][index]['possible'];
}
return $tgts[omg];

并且可能接近上述一百种变体,试图让它返回一些模糊地类似于对 CT2 类型节点的实体引用的东西。

我似乎无法深入挖掘实体/字段引用以获取适用于具有这种关系的所有非字段集合字段的 field_ct2_ref['und'][0]['target_id']。或者我收到 AJAX 错误,告诉我“未知数据属性 field_coll_ct2”或控制台错误,说我尝试向这些数组对象抛出的每个索引(甚至只是获取其中一个值)都是错误的。

有没有更简单的方法来做到这一点?我是否遗漏了一些简单而明显的东西——无论是我实现 View 的方式还是 PHP 本身?

对于它的价值,我已经能够通过选择与“引用实体:field_ct2_ref”的关系来缩小视图结果而无需任何上下文过滤器,但它显示了由任何 CT1 类型节点而不是特定 CT1 类型节点引用的所有 CT2 节点我在看。

谢谢!

4

0 回答 0