1

私はこの問題をいじくり回し、数時間調査しようとしました。私はまだ Drupal 7 のエンティティ API に慣れ親しんでおり、PHP で作業しようとしましたが、役に立ちませんでした。疲れた脳が物事を考えすぎた結果、非常に明白な何かが欠けていると思います。

CT1 と CT2 の 2 つのコンテンツ タイプがあります。CT1 には、複数のフィールド コレクション値を保持できるフィールドがあります。このフィールド コレクション (field_coll_ct2) では、フィールドの 1 つ (field_ct2_ref) がコンテンツ タイプ CT2 のノードへのエンティティ参照です。

ここで、タイプ CT1 の 1 つのノードを見ているときに、その 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 タイプのノードへのエンティティ参照に漠然と似たものを返そうとする、おそらく上記の 100 近くのバリエーションに近いものです。

この種の関係を持つすべての非フィールド コレクション フィールドで機能する field_ct2_ref['und'][0]['target_id'] に到達するために、エンティティ/フィールド参照を十分に掘り下げることができないようです。または、「不明なデータ プロパティ field_coll_ct2」という AJAX エラーが表示されるか、これらの配列オブジェクトでスローしようとするすべてのインデックス (値の 1 つを取得するだけでも) が間違っているというコンソール エラーが表示されます。

これを行う簡単な方法はありますか?ビューまたは PHP 自体を実装する方法のいずれかで、単純で明白なものが欠けていますか?

参考までに、「参照エンティティ: field_ct2_ref」との関係を選択することで、コンテキスト フィルターを使用せずにビューの結果を絞り込むことができましたが、特定の CT1 タイプ ノードではなく、ANY CT1 タイプ ノードによって参照されるすべての CT2 ノードが表示されます。見ています。

ありがとうございました!

4

0 に答える 0