Drupal 7: Как создать пункт меню / маршрут, который не отображается в навигации сайта - PullRequest
6 голосов
/ 02 марта 2011

Как я могу создать новый маршрут / меню в Drupal, который автоматически не отображает навигационную ссылку?

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

У меня есть модуль с именем helloworld.

Файл .module содержит следующее

function _helloword_page_callback()
{
    return array('#markup'=>'The quick brown fox says hello, and the lazy dogs thanks you
    for following conventions.');
}

function helloworld_menu()
{
    $items['helloworld'] = array(
      'title'               => 'Hello World',
      'page callback'       => '_helloword_page_callback',
      'access arguments'    => array('content'),
      'type'                => MENU_CALLBACK
    );
    return $items;
}

Это успешно предоставляет URL на сайте

http://example.drupal.com/helloworld

Однако , я все еще получаю ссылку в левом меню (Bartik), несмотря на использование

'type'              => MENU_CALLBACK

Итак, почему это не работает? Правильно ли я настраиваю пункт меню? Более вероятный вопрос: как я неправильно истолковываю использование констант / системы типа меню? Есть ли дополнительные кеши для очистки, что

drush cc all

не позаботится о? Какие еще шаги я могу предпринять для отладки этого?

Ответы [ 2 ]

6 голосов
/ 02 марта 2011

Должно быть что-то еще не так (возможно, вы забыли очистить кеши?), Потому что даже с Бартиком все работает как положено.В этом примере в навигации отображается только «Hello 2»:

function helloworld_menu(){
    return array(
        'hello1' => array(
            'title'               => 'Hello 1',
            'page callback'       => 'helloworld_page_callback',
            'access arguments'    => array('content'),
            'type'                => MENU_CALLBACK
        ),
        'hello2' => array(
            'title'               => 'Hello 2',
            'page callback'       => 'helloworld_page_callback',
            'access arguments'    => array('content')
        )
    );
}

function helloworld_page_callback(){
    return array('#markup'=>'The quick brown fox says hello, and the lazy dogs thanks you for following conventions.');
}

Кстати, в вашем фрагменте есть опечатка (helloroute_menu должно называться helloworld_menu),но я предполагаю, что это связано с упрощением кода перед публикацией в StackOverflow.

4 голосов
/ 02 марта 2011

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

Если это так, вы можете просто удалить там.

...