菜单路径与通配符

chi*_*tte 1 drupal menu path drupal-6

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

事件/ instal2010

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

我正在使用Context和Menu Block模块在该页面的侧边栏中放置一个菜单...

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

......程序的路径是什么

事件/ instal2010 /程序

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

事件/*/程序

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

有经验之手的任何建议都会很棒,谢谢.

Lax*_*n13 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;
}
Run Code Online (Sandbox Code Playgroud)

$items['events/%/programme'] = array(,%是通配符,它​​将传递给您的页面回调函数.阅读有关hook_menu()的更多信息可能会有所帮助,而hook_menu剖析也可能有所帮助.