Tips

Drupal ではモジュールが、(コアも含めた)他のモジュールのページ構築中に実行しようとしているデータベースクエリを変更操作することができる。D6 では db_rewrite_sql() を使うのだが、これは D7 では使えない。

D7 では hook_query_alter() というのを使うらしい。addTag() でクエリにタグを設定することができるようになっている。

他のモジュールのクエリを操作するときは、設定されているタグでクエリを識別する。

addTag()の例

コア: 
Drupal7

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))
?>
コア: 
Drupal7

ノード編集フォームの中の CCK フィールドの、例えばセレクトボックスをチェックボックスにしたい場合なんかは、GUI で変更できる。

  1. 「管理セクション」 > 「コンテンツの管理」 > 「コンテンツタイプ」 から、操作したいコンテンツタイプの「manage fields」をクリック。
  2. 操作するフィールドの「設定」をクリック。
  3. 「基本情報の変更」ボタンをクリック。
  4. 「ウィジェットタイプ」の中から変更したい設定を選んで、「継続」ボタンをクリック。
  5. 「値の数」を無制限か2以上にするとチェックボックスに、1を選ぶとラジオボタンになる。
  6. 「使用する値のリスト」に選択できるアイテムを設定する。phpコードで入力する場合は、フォームの ’#options’ に設定する配列を返すように書くと、動作する。
コア: 
Drupal6
  1. モジュール管理ページで、PHP filter モジュール(コアモジュール)を有効化する。
  2. 権限の設定ページ('/admin/people/permissions')でパーミッションを適切に設定する
コア: 
Drupal7

ページ