web-dev-qa-db-ja.com

カスタムモジュールのhook_menu()でタブを作成する

私のカスタムモジュールのバックエンドでタブを作成しようとしている2時間以来。

私はいくつかの提案を試しましたが、どれも機能させることができませんでした。

これは私の現在のhook_menu()です:

    function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  return $items;
}

「tab1」と「tab2」という2つのタブが必要なだけです。

誰かが私に実用的な例を教えてくれますか?これは本当に簡単なはずですが、今のところそれは不可能のようです

14
mhmdrupal

通常のメニュー項目である「ルート」パスを定義してから、各タブに別の項目を追加する必要があります。これらの1つ目はルート項目のプロパティを継承し、2つ目は独自のコールバックを定義します。

MENU_LOCAL_TASK および MENU_DEFAULT_LOCAL_TASK タイプの定数と組み合わせると、期待するタブが得られます。

function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  $items['admin/config/system/social_links/tab1'] = array(
    'title' => 'Tab 1',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => -10
  );

  $items['admin/config/system/social_links/tab2'] = array(
    'title' => 'Tab 2',
    'type' => MENU_LOCAL_TASK,
    'page callback' => 'some_callback',
    'access arguments' => array('some permission')
  );

  return $items;
}
44
Clive