Изменение заголовка вашей страницы в соответствии с заголовком ваших вкладок
У меня есть следующая функция:
function cvminterviews_menu() {
$items = array();
$items['admin/settings/cvminterviews'] = array(
'title' => 'Interview Schedule Overview',
'description' => 'Overview',
'file' => 'cvminterviews_admin_overview.inc.php',
'page callback' => 'drupal_get_form',
'page arguments' => array('cvminterviews_overview_form'),
'access arguments' => array('administer cvminterviews'),
);
$items['admin/settings/cvminterviews/overview'] = array(
'title' => 'Overview',
'description' => 'Overview',
'file' => 'cvminterviews_admin_overview.inc.php',
'page callback' => 'drupal_get_form',
'page arguments' => array('cvminterviews_overview_form'),
'access arguments' => array('administer cvminterviews'),
'type' => MENU_DEFAULT_LOCAL_TASK,
);
$items['admin/settings/cvminterviews/setup'] = array(
'title' => 'Interview Schedule Setup',
'description' => 'Setup',
'file' => 'cvminterviews_admin_setup.inc.php',
'page callback' => 'drupal_get_form',
'page arguments' => array('cvminterviews_dateroomsetup_form'),
'access arguments' => array('administer cvminterviews'),
'type' => MENU_LOCAL_TASK,
);
return $items;
}
Это выводит две вкладки в верхней части страницы. Однако, когда я нажимаю на каждую вкладку, она имеет тот же заголовок страницы, что и пункт родительского меню "Обзор расписания собеседований".
Есть ли способ установить уникальные заголовки страниц для каждой вкладки?
3 answers
Вы должны позвонить
> 4.6 – 6 drupal_set_title($title = NULL)
> 7 – 8 drupal_set_title($title = NULL, $output = CHECK_PLAIN)
Вам придется немного изменить свой код
$items['admin/settings/cvminterviews/setup'] = array(
'title' => 'Interview Schedule Setup',
'description' => 'Setup',
'file' => 'cvminterviews_admin_setup.inc.php',
'page callback' => 'drupal_get_form',
'page arguments' => array('cvminterviews_dateroomsetup_form'),
'access arguments' => array('administer cvminterviews'),
'type' => MENU_LOCAL_TASK,
);
До
$items['admin/settings/cvminterviews/setup'] = array(
'title' => 'Interview Schedule Setup',
'description' => 'Setup',
'file' => 'cvminterviews_admin_setup.inc.php',
'page callback' => '_cvminterviews_admin_page',
'page arguments' => array(
'variables' => array(
'form' => 'cvminterviews_dateroomsetup_form',
'title' => t('my_title')
)
),
'access arguments' => array('administer cvminterviews'),
'type' => MENU_LOCAL_TASK,
);
function _cvminterviews_admin_page($variables = NULL) {
if(isset($variables['title'])) {
drupal_set_title($variables['title']);
}
if(isset($variables['form'])) {
return drupal_get_form($variables['form']);
}
}
Затем сделайте то же самое для $items[admin/settings/cvminterviews']
& $items['admin/settings/cvminterviews/setup']
При изменении кода возникает еще одна проблема, о которой вам необходимо знать.
В разделе администратор/настройки/просмотры cvminterviews будет 2 вкладки, одна из которых будет активной "Обзор" и "Настройка расписания собеседований". "Обзор" будет ссылаться на администратора/настройки/cvminteviews НЕ администратор/настройки/cvminterviews/обзор. администратор/настройки/cvminterviews/обзор никогда не будет вызван (если вы не введете его в адресную строку), потому что это вкладка по умолчанию, установленная 'type' => MENU_DEFAULT_LOCAL_TASK
.
Я использовал этот код (в моей функции, которая устанавливает хлебную крошку, но это также может быть использовано при обратном вызове страницы)
<?php
// get current menu item informations. This contain the title of the tab.
$item = menu_get_item();
// use it as page title.
drupal_set_title($item['title']);
?>
Я полагаю, что в целом вы склонны сохранять одно и то же название при использовании локальных задач - сами задачи предназначены для действий, которые вы можете выполнять над каким-либо общим объектом/областью, поэтому в этом случае имеет смысл сохранять одно и то же название, независимо от того, на какой локальной задаче вы находитесь.