プログラムで用語を含むノードを取得する方法


9

用語参照を含む語彙とカスタムコンテンツタイプがあります。

モジュール内の特定の用語のすべてのノードを取得するにはどうすればよいですか?

このようなもの?これは機能しません。

$field = field_info_field('field_game');
$results = new EntityFieldQuery;
$results->fieldCondition($field, 'field_game_tid', '5')
  ->execute();

$nids = array();
foreach($results as $result) {
  $nids[] = $result->nid;
}

$nodes = node_load_multiple($nids);

回答:


13

最初にノードを検索するように指定し(必要に応じてコンテンツタイプで検索し)、次に用語でフィルタリングします。

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'YOUR_CONTENT_TYPE_HERE')
->fieldCondition('field_game', 'tid', 5);

$result = $query->execute();
$nids = array_keys($result['node']);
$nodes = entity_load('node', $nids);

これは、このようなエンティティクエリの良い例です(そしてより多くのフィールド条件)。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.