Drupal 7: как скрыть ссылку на дополнительную вкладку?
Я пишу модуль Drupal 7. Поэтому части моей реализации hook_menu() выглядят так:
$items['admin/mymodule/a'] = array(
'title' => 'A',
'page callback' => 'mymodule_a',
'access arguments' => array('administer mymodule'),
'type' => MENU_LOCAL_TASK,
'weight' => 2,
);
$items['admin/mymodule/a/%id/edit'] = array(
'title' => 'Edit',
'page callback' => 'mymodule_edit',
'access arguments' => array('administer mymodule'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 1,
);
$items['admin/mymodule/a/%id/details'] = array(
'title' => 'Details',
'page callback' => 'mymodule_details',
'access arguments' => array('administer mymodule'),
'type' => MENU_LOCAL_TASK,
'weight' => 2,
);
Теперь я пытаюсь добиться того, чтобы скрыть ссылки со страницы "А" на дополнительные вкладки, при этом ссылки на эти дополнительные вкладки по-прежнему сохраняются, т. Е. При доступе к admin / mymodule / a не должно быть ссылок на дополнительные вкладки. в то время как для admin/mymodule/a/42/edit должны быть добавлены ссылки как на страницу сведений .../42/edit, так и .../42/details. Я думаю, что это должно быть легко достижимо, но я не могу понять, как... Спасибо за ваши предложения!
1 ответ
Я новичок в Drupal себя, но я думаю, что вы можете использовать следующий хук:
hook_menu_alter(&$items)
// http://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu_alter/7
изменить "тип" двух последних страниц на MENU_CALLBACK (который затем скроет вкладки для этих страниц)
РЕДАКТИРОВАТЬ (после прочтения вашего ответа):
$items['pages/render-array'] = array(
'title' => 'Render array',
'description' => 'Menu system example using a render array.',
'page callback' => 'pages_render_array',
'access arguments' => array('access content'),
'weight' => 2,
'type' => MENU_LOCAL_TASK,
);
$items['pages/render-array/tab1'] = array(
'type' => MENU_DEFAULT_LOCAL_TASK,
'title' => 'Tab 1',
);
$items['pages/render-array/tab2'] = array(
'title' => 'Tab 2',
'description' => 'Demonstrating secondary tabs.',
'page callback' => 'pages_render_array',
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
);
это код для страницы с 2 вложенными вкладками, я думаю, что вы можете поместить условие в 'hook_menu_alter' (= когда на странице 'A'), чтобы изменить другие 2 страницы (или что-то подобное..?)
очень жаль, если это тоже не помогает, просто пытаюсь провести мозговой штурм:D (первая неделя друпала)