Изменение заголовка вашей страницы в соответствии с заголовком ваших вкладок


У меня есть следующая функция:

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;
}

Это выводит две вкладки в верхней части страницы. Однако, когда я нажимаю на каждую вкладку, она имеет тот же заголовок страницы, что и пункт родительского меню "Обзор расписания собеседований".

Есть ли способ установить уникальные заголовки страниц для каждой вкладки?

 7
Author: kiamlaluno, 2011-07-18

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.

 2
Author: iStryker, 2011-07-18 17:16:25

Я использовал этот код (в моей функции, которая устанавливает хлебную крошку, но это также может быть использовано при обратном вызове страницы)

<?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']);
?>
 1
Author: yann_yinn, 2013-07-02 09:04:40

Я полагаю, что в целом вы склонны сохранять одно и то же название при использовании локальных задач - сами задачи предназначены для действий, которые вы можете выполнять над каким-либо общим объектом/областью, поэтому в этом случае имеет смысл сохранять одно и то же название, независимо от того, на какой локальной задаче вы находитесь.

 -1
Author: Andy, 2011-07-18 18:28:15