Как добавить вкладку локальной задачи в представление узла? [закрыто]

8

Я пытаюсь добавить дополнительную вкладку к узлу «Просмотр» и «Редактирование».

Мой модуль включен нормально, и я очистил кеш, но моя новая вкладка не появляется. Что мне не хватает?

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();

  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'page callback' => 'add_performance_action',
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

/**
* Page callback.
*/
function add_performance_action() {
  return t('Hello');
}
Пушка
источник
Маршрут работает? Если вы перейдете в «/ node / 1 / performance», вы получите «Hello» обратно?
Les Lim
Хорошая точка зрения. Нет, он просто отображает узел как обычно.
пушка
4
В написанном вами коде нет ничего плохого, поэтому пройдите обычные проверки: посмотрите на имя файла вашего модуля на предмет опечаток, посмотрите на таблицы кеша, чтобы убедиться, что они очищаются и т. Д.
Les Lim
1
Эй, спасибо - обнадеживаю, зная, что это не код. В конце концов, я заработал, отключив и снова включив модуль. Может потому что таблица роутеров обновляется при включении? Во всяком случае ... это работает сейчас.
Пушка

Ответы:

0

Когда вы меняете hook_menu, вам не нужно «очищать кеш», а « перестраивать меню ».

Petrroll
источник
достаточно перестроить меню, но чистый кэш включает меню перестроения.
Санзанте
0

Ваш код выглядит хорошо, но не забывайте очищать кеши Drupal в admin / config / development / performance после каждого изменения в вашем hook_menu выше.

Альтернатива, которая приходит на ум, будет использовать hook_menu_local_tasks_alter, потому что пункт меню, который мы хотим использовать, может уже существовать.

Вы также можете попробовать это, я надеюсь, что это поможет вам:

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();
  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'access callback' => 'your_module_access_check',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function your_module_access_check($node) {
  if ($node->type == 'page') {
    return TRUE;
  }
  return FALSE;
}

Спасибо

Кумар Рахул Санкрит
источник