Tips

特定のウィジェットタイプを操作するには、hook_field_widget_WIDGET_TYPE_form_alter() を使います。WIDGET_TYPE のところを、操作したいウィジェットタイプに置き換えて使います。

ウィジェットタイプの名前が分からないときは、操作したいウィジェットを含むフォームが存在するページで、hook_field_widget_form_alter() をコールしてみて、第1引数を $element とすると、$element['instance']['widget']['type'] にあります。

コア: 
Drupal7

利用可能なすべてのコンテンツタイプの情報を得るには node_type_get_types() 、特定のノードのコンテンツタイプの情報を得るには node_type_get_type($node) を使います。

node_type_get_types() はコンテンツタイプの内部名称をキー、コンテンツタイプの情報のオブジェクトを値とする配列を返します。

node_type_get_type($node) は引数に渡されたノードが属するコンテンツタイプの情報のオブジェクトを返します。

コア: 
Drupal7

path_to_theme() を使います。

特定のテーマ、またはモジュールのパスを求めるには drupal_get_path() を使います。

element_children() を使います。

レンダリング配列の値には自身のレンダリング設定(キーの名前が「#」ではじまるもの)と、子要素(キーの頭に「#」の付かないもの)の2種類がありますが、element_children() はこのうち子要素のキーだけを配列にして返します。返り値は

0 => '子要素1のキー',
1 => '子要素2のキー',
2 => '子要素3のキー',
...

といった形の添字配列となります。

フィールドをグループ化している場合などには重宝します。

コア: 
Drupal7

Drupal7のインストールのデフォルトでは、Listモジュール(コアモジュール)が無効になっているので、これを有効にする。

そうするとフィールドタイプ(保存データ形式)で List(float) と List(integer)、リスト(テキスト)が選択できるようになるので、いづれかを選択すると、ウィジェット(データ編集用フォーム要素)に選択リスト、チェックボックス/ラジオボタンを設定できるようになる。

整数、浮動小数点数値といった数値タイプのフィールドを追加したい場合は、Numberモジュール(コアモジュール)を有効にすると、フィールドタイプの選択肢に追加される。Numberモジュールもデフォルトでは無効になっている。

コア: 
Drupal7

コンテンツタイプのフィールド項目が多くなると、ノードの編集画面の整理(グループ分け等によるカスタマイズ)が必要になってくる。

フィールドセットなどで入力フォームをグループ分けするのに、独自の汎用カスタムモジュールの中で、hook_form_FORM_ID_alter() などのフックでフォームをカスタマイズしていましたが、そういったことは、普通に CCK をインストールしていれば GUI 操作で簡単に出来ることがわかった。

コンテンツタイプの「フィールドの管理」ページで、「追加」フォームの一番下、New group を追加すれば良い。

コア: 
Drupal6

内部パスからエイリアスを求めるには drupal_get_path_alias() を使う。

その逆、エイリアスから内部パスを求めるには drupal_get_normal_path() を使う。

コア: 
Drupal7

Drupalでは、ノードの本文などのテキストエリアに入力した内容は、表示の際に改行を自動的に HTML に変換してしまう。(<p>タグや<br />タグなどで HTML マークアップしてしまう。)

これは便利なときもあるが、邪魔なときもある。

邪魔なときは、テキストフォーマットの設定('/admin/config/content/formats')ページで、テキストフォーマットを新たに追加し、その設定で「改行を HTML に変換(たとえば、<br />や</p><p>などに)」のチェックをはずして、名前を「改行変換なし」などとして登録すれば良い。(Drupal6 の場合は入力書式の設定ページ '/admin/settings/filters' で、入力書式を新たに追加し、その設定で「改行コンバータ」(段落や改行を HTML タグ(<p>と<br />)に変換します。)のチェックをはずして登録する。)

その後、自動で改行変換したくないテキストエリアの編集時には、このフォーマットを選択するようにします。

コア: 
Drupal6
Drupal7

アイテムの設定項目の 'type' を MENU_NORMAL_ITEM にして、 'menu_name' を 'main-menu' にする。

MENU_NORMAL_ITEM だと全部ナビゲーションメニューに登録されると思っていたが、それはデフォルトの振る舞いで、 'menu_name' を指定すれば、ユーザーメニューにも、カスタムメニューにも追加することが出来る。

コア: 
Drupal6
Drupal7

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

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

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

addTag()の例

コア: 
Drupal7