2011-11-03 90 views
1

你不能在菜单路径中使用通配符吗?对我的问题(我已经确定是有道理的,所以你不浪费你的时间)的快速总结:我有一个菜单,我在某个内容类型的节点页面上显示。我的一个节点页面路径会是这样......带通配符的菜单路径

事件/ instal2010

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

我使用的上下文和菜单模块组件放置在页面侧边栏上的菜单......

  • 事件(默认的活动项目)
  • 计划
  • 游客信息
  • 预订门票

...其中方案的路径将是

事件/ instal2010 /程序

因此,对于这个为许多不同的事件工作,这些菜单项需要一个通配符的路径,例如

事件/ * /程序

或许是时候抛弃菜单和只使用一个块用PHP来确定我们从网址是什么网页上。

从经验丰富的双手任何意见将是awsome,谢谢。

回答

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

+0

谢谢拉克斯曼,非常感谢! – chichilatte