現在アクティブなセカンダリタブのタイトルを取得することはできますか?
このタブのタイトルを後でコンテンツで再利用したいと思います。近くにある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'
を取得します。
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'];
}
_
drupal_get_headers() でこれを実行し、結果を解析できるはずです。
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']を使用して、現在のパスを取得します。