Создать друпал (под) меню - PullRequest
1 голос
/ 06 октября 2011

ОК, у меня есть странная вещь, я буду признателен за любую помощь.Когда вы заходите в админ панель Drupal и нажимаете Structure, вы получаете меню, которое содержит Blocks, Content types, Menus и т. Д.

Есть ли способ, которым я могу программно построить одиниз тех меню, основанных на пути?Например, если у меня есть мой модуль с именем test, а все его действия расположены в www.drupalsite.com/admin/test/action_name, могу ли я создать свое меню со всеми /test/action_name, существующими в текущем модуле?

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

1 Ответ

1 голос
/ 06 октября 2011

Трудно быть таким описательным без какой-либо дополнительной информации, но вам просто нужно реализовать hook_menu() и выполнить цикл по списку действий, создавая пункт меню для каждого из них. Каждый раз, когда меню перестраивается, будет вызываться ваш хук меню, и текущий список действий будет построен как ссылки меню. Примерно так:

function mymodule_menu() {
  $actions = mymodule_get_actions_list();

  foreach ($actions as $action) {
    $items['admin/test/' . $action->name] = array(
      'title' => $action->name,
      'access arguments' => array('some permission'),
      'page callback' => 'mymodule_callback',
      'page_arguments' => array($action->name)
    );
  }


  return $items;
}

function mymodule_callback($action_name) {
  // Load the action and display the page
}

После того, как вы вызовете свой пользовательский код для создания одного из этих действий, обязательно вызовите menu_rebuild(), чтобы ваш хук заработал и новое действие было добавлено в меню.

...