Drupal 7:如何创建在站点导航中不显示的菜单/路线项目

时间:2011-03-02 16:54:38

标签: drupal drupal-7 drupal-routes

如何在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;
}

这会成功公开

网站上的网址
http://example.drupal.com/helloworld

然而,尽管使用

,我仍然会在左手(Bartik)导航菜单中找到一个链接
'type'              => MENU_CALLBACK

那么,为什么这不起作用?我正确配置菜单项吗?更可能的问题:我如何误解菜单类型常量/系统的使用?是否有其他缓存来清除

drush cc all

会不会照顾?我可以采取哪些其他步骤来调试它?

2 个答案:

答案 0 :(得分:6)

一定有其他错误(也许你忘了清除缓存?)因为即使使用Bartik,它也能正常运行。在该示例中,导航中仅显示“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.');
}

顺便说一句,你的snipplet中有一个拼写错误(helloroute_menu应该被命名为helloworld_menu),但我认为这是由于在StackOverflow上发布之前的代码简化。

答案 1 :(得分:4)

查看菜单管理中的菜单链接。如果您在那里进行了自定义(例如重量更改),即使您设置为回调类型,它仍可能保留。

如果是这种情况,你可以在那里删除。