如何在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
会不会照顾?我可以采取哪些其他步骤来调试它?
答案 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)
查看菜单管理中的菜单链接。如果您在那里进行了自定义(例如重量更改),即使您设置为回调类型,它仍可能保留。
如果是这种情况,你可以在那里删除。