Як додати локальну вкладку завдань до перегляду вузлів? [зачинено]


8

Я намагаюся додати додаткову вкладку на вкладці "view" та "edit".

Мій модуль включений нормально, і я очистив кеш, але нова вкладка не відображається. Що я пропускаю?

/**
* 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

Ваш код виглядає добре, але не забудьте очистити кеш-файли Drupal під час адміністрування / конфігурації / розробки / продуктивності після кожної зміни вашого кука_меню вище.

Альтернативою, яка спадає на думку, було б використовувати гак_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;
}

Дякую

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.