フック

Drupal は柔軟に、そしてダイナミックにWEB サイトに機能を追加したり、カスタマイズを加えることができます。しかしそれでもある程度複雑な機能のウェブサイトを構築しようとすると、カスタマイズしきれない部分というのがいくつか出てきます。要望にマッチしたコントリビュートモジュールを探すのも一つの手ですが、それもなかなか大変です。

フック(※1)の記述場所として、サイトごとに調整用のカスタムモジュールをひとつ作っておくと、対応するフックにわずかなコードを加えるだけで、細かい部分まで対応できるので便利です。

Drupal のモジュールの作成は簡単です。

コア: 
Drupal7

モジュール(もしくはテーマ)のテーマの実装をレジストリに登録します。

コア: 
Drupal7

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

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

コア: 
Drupal7
~ Query alteration 和訳 ~

ダイナミックセレクトクエリーの重要な特徴のひとつは、他のモジュールがクエリの実行時に変更を加えられることです。ノードのアクセス制限などの動作に見られるように、モジュールは自身のクエリ、もしくは他のモジュールのクエリに対しても、独自の条件の追加などを行うことができます。こういったクエリの変更機能にはタグ付けメタデータhook_query_alter() といった3つの要素があります。

コア: 
Drupal7
オンラインユーザーヘルプを提供します。

hook_help() を実装することで、モジュールは、ユーザーにモジュールを利用する際のヘルプドキュメントを作成することが出来ます。開発者向けのヘルプは、通常はコード内のファンクションヘッダのコメント部分に記載するか、特別にAPIの用例ファイルを作成しその中に記載するようにします。

タグ: 
コア: 
Drupal7

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

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

コア: 
Drupal6
Drupal7