Drupal ではモジュールが、(コアも含めた)他のモジュールのページ構築中に実行しようとしているデータベースクエリを変更操作することができる。D6 では db_rewrite_sql() を使うのだが、これは D7 では使えない。
D7 では hook_query_alter() というのを使うらしい。addTag() でクエリにタグを設定することができるようになっている。
他のモジュールのクエリを操作するときは、設定されているタグでクエリを識別する。
addTag()の例
db_or() というのを使うらしい。こんな感じになる。
<?php // From taxonomy_term_save(): $or = db_or()->condition('tid1', 5)->condition('tid2', 6); db_delete('term_relation')->condition($or)->execute(); // DELETE FROM {term_relation} WHERE ((tid1 = 5 OR tid2 = 6)) ?>
ノード編集フォームの中の CCK フィールドの、例えばセレクトボックスをチェックボックスにしたい場合なんかは、GUI で変更できる。