web-dev-qa-db-ja.com

アクティブなタブのタイトルを取得します

現在アクティブなセカンダリタブのタイトルを取得することはできますか?

このタブのタイトルを後でコンテンツで再利用したいと思います。近くにあるmenu_local_tasks(1)を見つけましたが、これは完全なテーマ出力を返します。 hook_menu()で定義したとおりのタイトルが必要です。

編集:
My hook_menu構造(内の要素のみにトリミングされ、兄弟要素は含まれません):

$items['events/%node'] = array(
    'title' => 'Events',
    'page callback' => 'page_events',
    'page arguments' => array(1),
    'type' => MENU_NORMAL_ITEM,
);

$items['events/%node/stats'] = array(
  'title' => 'Stats',
  'access callback' => TRUE,
  'page callback' => 'page_stats',
  'page arguments' => array(1),
  'type' => MENU_LOCAL_TASK,
  'weight' => 3,
);

$items['events/%node/stats/year'] = array(
  'title' => 'This Year',
  'access callback' => TRUE,
  'type' => MENU_DEFAULT_LOCAL_TASK,
  'weight' => 0,
);

$items['events/%node/stats/lastyear'] = array(
  'title' => 'Last Year',
  'access callback' => TRUE,
  'page callback' => 'page_stats',
  'page arguments' => array(1),
  'type' => MENU_LOCAL_TASK,
  'weight' => 1,
); 

たとえば、events/%node/stats/yearのページで'This Year'を取得します。

3
ack

menu_get_active_title() は、探している関数でなければなりません。

_function menu_get_active_title() {
  $active_trail = menu_get_active_trail();

  foreach (array_reverse($active_trail) as $item) {
    if (!(bool) ($item['type'] & MENU_IS_LOCAL_TASK)) {
      return $item['title'];
    }
  }
}
_

これは、メニュータイプにフラグ_MENU_LOCAL_TASK_(_MENU_DEFAULT_LOCAL_TASK_メニュータイプも含む)が含まれているメニューで機能します。

この関数は、Drupal 7でも定義されています。

更新:/ node /%node/viewのようなメニューの場合、menu_get_active_title()が/ node /%nodeのタイトルを返すことに気付きました。次のコードは、タイトルがタイトルコールバックによって指定された場合を含め、これらの場合にも正しいタイトルを返す必要があります。 Drupal 7でテストしました。実際に使用しているテストサイトにはDrupal 6はありません。

_$item = end(menu_get_active_trail());

if (!empty($item['title_callback'])) {
  $args = array();
  if (!empty($item['title_arguments'])) {
    foreach ($item['title_arguments'] as $value) {
      if (is_int($value)) {
        // Get the value from the menu item map.
        if (!empty($item['map'])) {
          $args[] = $item['map'][$value];
        }
      }
      else {
        $args[] = $value;
      }
    }
  }

  $title = call_user_func_array($item['title_callback'], $args);
} 
 else {
   $title = $item['title'];
 }
_
4
kiamlaluno

drupal_get_headers() でこれを実行し、結果を解析できるはずです。

1
greggles

menu_get_item($ path = NULL、$ router_item = NULL)を試してください http://api.drupal.org/api/drupal/includes --menu.inc/function/menu_get_item/6 。 'title'値を含むメニュータブエントリの詳細を含む返される配列になるパス値を渡すことができるはずです。

$ _GET ['q']を使用して、現在のパスを取得します。

1
DeeZone