Please Sign In or Register

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 arguments
    callback 関数に渡すアーギュメントの配列を指定します。
    モジュールの設定フォームなどで初期値の設定を読み込ませるために使用します。
  • 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" を削除してトラックバックを送信してください。