您不能在菜单路径中使用通配符吗?我的问题的快速摘要(我已经确定它是有道理的,所以你不浪费你的时间):我有一个菜单,我正在某个内容类型的节点页面上显示。我到节点页面的路径就像......
事件/ instal2010
...其中instal2010将是事件的名称(事件是内容类型)。
我正在使用上下文和菜单块模块在该页面的侧栏中放置一个菜单...
......程序的路径是
事件/ instal2010 /程序
因此,对于许多不同的事件,这些菜单项在其路径中需要通配符,例如
事件/ * /程序
也许是时候抛弃菜单了,只是使用一个带有php的块来确定我们从URL上打开的页面。
有经验的人提出的任何建议都很棒,谢谢。
答案 0 :(得分:5)
您无法使用Drupal的管理界面创建带通配符的菜单项,但可以在模块中创建带通配符的菜单项。我建议创建一个使用hook_menu()创建菜单项的自定义模块。示例实现看起来像:
function YOURMODULE_menu() {
$items = array();
$items['events/%/programme'] = array(
'title' => 'Programme',
'description' => 'Loads a program page',
'page callback' => 'YOUR CUSTOM FUNCTION NAME', // Custom function used to perform any actions, display the page, etc
'page arguments' => array(1), // Passes wildcard (%) to your page callback function
'access callback' => TRUE, // Change if you want to control access
'type' => MENU_NORMAL_ITEM, // Creates a link in the menu
'menu_name' => 'primary-links' // Adds the link to your primary links menu, change if needed
);
return $items;
}
在$items['events/%/programme'] = array(
中,%
是通配符,它将传递给您的页面回调函数。阅读有关hook_menu()的更多信息可能会有所帮助,Anatomy of hook_menu也可能有所帮助。