hook_menu()
メニュー項目と表示するページを定義します。
この hook はメニューにモジュールのパスを追加するために使用します。
メニュー項目は、ナビゲーションブロックのメニューツリー内やメニューの管理ページ(admin/build/menu)に追加することができます。
パラメータ
hook_menu($may_cache)- メニュー項目がキャッシュ可能であるかどうかを TRUE または FALSE の論理値で返します。
メニューのキャッシュはユーザ毎に保存されます。
Drupal では、始めに$may_cacheが TRUE の場合をコールし、次に FALSE の場合がコールされるので、メニュー項目は TRUE または FALSE のどちらかのみに設定します。両方の場合に設定してしまうと予期せぬ動作を起こすことになります。
戻り値
それぞれのメニュー項目について、以下のキーの値を組み合わせた連想配列を指定します。
-
path- 必須です。メニューアイテムを選択した時のパスを指定します。
-
title- 必須です。メニュー項目のタイトルを
t()を使って翻訳可能な形式で指定します。
-
callback- メニュー項目が選択され、ページが表示された時にコールする関数を指定します。
モジュールの設定を行うためのフォームを表示する場合などに使用します。
省略されている場合は、上位のメニュー項目のcallbackが引き継がれます。
-
callback argumentscallback関数に渡すアーギュメントの配列を指定します。
モジュールの設定フォームなどで初期値の設定を読み込ませるために使用します。
-
access- ユーザがこのメニュー項目を表示するために必要なアクセス権を持っているかどうかを判定します。
通常はuser_access()関数を利用します。
この項目が省略され、かつcallbackも省略されている場合は、上位のメニュー項目のアクセス権が引き継がれます。
-
weight- メニュー内での項目の表示位置の並び順を決定するための整数値を指定します。
数値の大きい項目ほど下位置に表示されます。
デフォルトの値は 0 で、同じ値の場合はアルファベット順に並びます。
-
type- メニュー項目の属性を指定します。多くの属性は menu.inc の定数として提供されています。
省略されている場合はMENU_NORMAL_ITEMが指定されます。-
MENU_NORMAL_ITEM- 通常のメニュー項目としてナビゲーションメニューに表示されます。
-
MENU_ITEM_GROUPING- "node/add" のようなグループ化されたメニューの下位のメニュー項目として表示されます。
-
MENU_CALLBACK- メニューとしては表示されませんが、その URL にアクセスした場合には指定した内容が正常に実行されます。
-
MENU_DYNAMIC_ITEM- 頻繁に変化するメニューです。データベースにこのメニュー項目を格納するべきではありません。
-
MENU_SUGGESTED_ITEM- デフォルトでは非表示となっているメニュー項目としてナビゲーションメニューに追加されます。
-
MENU_LOCAL_TASK- メニュー項目がタブとしてページに表示されます。
-
MENU_DEFAULT_LOCAL_TASK- メニュー項目がデフォルトで機能するタブとしてページに表示されます。
"parent/def" や "parent/foo" のように上位のパスが一致するメニュー項目が複数ある場合に、上位のパスである "parent" を選択した場合に表示される項目として設定できます。
-
サンプルコード
function hook_menu($may_cache) {
global $user;
$items = array();
if ($may_cache) {
$items[] = array('path' => 'node/add/blog', 'title' => t('blog entry'),
'access' => user_access('maintain personal blog'));
$items[] = array('path' => 'blog', 'title' => t('blogs'),
'callback' => 'blog_page',
'access' => user_access('access content'),
'type' => MENU_SUGGESTED_ITEM);
$items[] = array('path' => 'blog/'. $user->uid, 'title' => t('my blog'),
'access' => user_access('maintain personal blog'),
'type' => MENU_DYNAMIC_ITEM);
$items[] = array('path' => 'blog/feed', 'title' => t('RSS feed'),
'callback' => 'blog_feed',
'access' => user_access('access content'),
'type' => MENU_CALLBACK);
}
return $items;
}
トラックバック
トラックバックは承認後に表示されます。
URLから "-nospam" を削除してトラックバックを送信してください。