drupal 7 hook_menu () не работает - PullRequest
2 голосов
/ 24 ноября 2011

Я пытаюсь добавить раздел на страницу Home> Administration> Configuration, где затем открывается новая форма с 2 вкладками (create_team и create_game).

Мой код (который не работает):

function guild_management_core_menu()
{           
$items['admin/config/guild_management_core/create_game'] = array
(
    'title' => 'Create Game',
    'description' => 'Create Game',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('guild_management_core_create_game'),
    'access arguments' => array('access administration pages'),
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => 0,
);      
$items['admin/config/guild_management_core/create_team'] = array
(
    'title' => 'Create Team',
    'description' => 'Create Team',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('guild_management_core_create_team'),
    'access arguments' => array('access administration pages'),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0,
);  

return $items;

}

Я попробовал ссылки ниже, но они тоже не работают: drupal - hook_menu Drupal hook_menu из модуля для меню администратора

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

РЕДАКТИРОВАТЬ: Это работает:

$items['admin/config/annotate'] = array(
    'title' => 'Guild Management',
    'description' => 'Guild Management',
    'position' => 'right',
    'weight' => -5,
    'page callback' => 'system_admin_menu_block_page',
    'access arguments' => array('administer site configuration'),
    'file' => 'system.admin.inc',
    'file path' => drupal_get_path('module', 'system'),
  );

Когда я заменяю "admin / config / annotate "с помощью" admin / config / guild_management_core "снова идет не так ...

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

ОБНОВЛЕНО

Это должно работать для вас:

function tbff_promo_menu() {
    $items['admin/config/guild_management'] = array(
        'title' => 'Create Game',
        'description' => 'Create Game.',
        'position' => 'right',
        'weight' => -20,
        'page callback' => 'system_admin_menu_block_page',
        'access arguments' => array('access administration pages'),
        'file' => 'system.admin.inc',
    );
    $items['admin/config/guild_management/core'] = array(
        'title' => 'Create Game',
        'description' => 'Create Game',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('search_block_form'),
        'access arguments' => array('access administration pages'),
        'type' => MENU_NORMAL_ITEM
    );
    $items['admin/config/guild_management/core/create_game'] = array(
        'title' => 'Create Game',
        'type' => MENU_DEFAULT_LOCAL_TASK,
        'weight' => 0
    );
    $items['admin/config/guild_management/core/create_team'] = array(
        'title' => 'Create Team',
        'description' => 'Create Team',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('search_block_form'),
        'access arguments' => array('access administration pages'),
        'type' => MENU_LOCAL_TASK,
        'weight' => 0,
    );
    return $items;
}
3 голосов
/ 24 ноября 2011

Для работы локальных задач путь должен находиться непосредственно под родительским путем. На данный момент у вас есть дополнительный уровень, /content/, который не позволяет отображать вкладки.

Ваши два локальных пути к задачам должны быть:

admin/config/guild_management_core/create_game
admin/config/guild_management_core/create_team

Как только вы сделаете это изменение, очистите кеши Drupal, и если вы все еще не получаете удовольствия, перейдите на страницу модулей, отключите ваш модуль, нажмите вкладку «Удалить», а затем фактически удалите ваш модуль. После переустановки все должно работать нормально.

UPDATE

Мне кажется, я знаю, в чем проблема: вы ожидаете, что ссылки под admin/config/guild_management_core появятся в виде ссылки в блоке на странице admin/config ... для того, чтобы сделать это, требуется обратный вызов страницы первого элемента меню. быть:

system_admin_menu_block_page ()

Если это не так, Drupal не будет знать, как разместить вашу страницу конфигурации на главной странице конфигурации администратора (именно так делают все основные / дополнительные модули).

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

Вы можете увидеть примеры использования system_admin_menu_block_page в основном модуле system.

...