菜单路径与通配符

时间:2011-11-03 16:50:33

标签: drupal menu path drupal-6

您不能在菜单路径中使用通配符吗?我的问题的快速摘要(我已经确定它是有道理的,所以你不浪费你的时间):我有一个菜单,我正在某个内容类型的节点页面上显示。我到节点页面的路径就像......

事件/ instal2010

...其中instal2010将是事件的名称(事件是内容类型)。

我正在使用上下文和菜单块模块在该页面的侧栏中放置一个菜单...

  • 事件(默认活动项目)
  • 程序
  • 访客信息
  • 预订门票

......程序的路径是

事件/ instal2010 /程序

因此,对于许多不同的事件,这些菜单项在其路径中需要通配符,例如

事件/ * /程序

也许是时候抛弃菜单了,只是使用一个带有php的块来确定我们从URL上打开的页面。

有经验的人提出的任何建议都很棒,谢谢。

1 个答案:

答案 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也可能有所帮助。