次のクエリを使用して、特定のコンテンツタイプの最後のXノードをリストするカスタムモジュールを作成しました。
_SELECT n.title, r.teaser, r.timestamp
FROM node n
INNER JOIN node_revisions r ON r.vid = n.vid
INNER JOIN term_node tn ON tn.nid = n.nid
INNER JOIN term_data t ON t.tid = tn.tid
WHERE t.name= 'breaking_news'
AND n.status = 1
ORDER BY n.nid DESC LIMIT 25
_
次に、node_load($nid)
を実行して、内部に画像と音声ファイルがあるかどうかを確認します。たとえば、
_$mynode = node_load($queryresutl->nid);
if ($mynode->field_efe_audio[0]['filepath']) {
$audio = 'yep, has audio';
}
_
しかし、私はnode_load()
がパフォーマンスキラーになる可能性があることを読んだので、これがtrueであり、モジュールのフィールドをチェックする代替手段があるかどうか疑問に思いますか?
まず、 node_load() を使用するとスクリプトが遅くなることを確認します。それが本当に確かな場合は、次のいずれかを行うことができます。
1- nid列とindex_audio
列を持つuse_audio
テーブルを作成します。ノードcreation/update/delete
でこのテーブルを更新できます。次に、このテーブルをクエリして、特定のノードにオーディオがアタッチされていることを確認します。そのようなチェックを集中的に行う必要がある場合にのみ、私はそのソリューションを使用します
2-インスタンスでnid
をetid
としてフィールドテーブルに直接クエリします。field_data_field_efe_audio
テーブルがFALSE
または実際のデータを返すかどうかを確認します