【问题标题】:Menu path with wildcard带有通配符的菜单路径
【发布时间】:2011-11-03 16:50:32
【问题描述】:

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

事件/instal2010

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

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

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

... Program 的路径是

events/instal2010/programme

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

事件/*/程序

也许是时候放弃菜单,只使用 php 块来确定我们从 URL 访问的页面。

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

【问题讨论】:

    标签: drupal menu path drupal-6


    【解决方案1】:

    您无法从 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 也可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      相关资源
      最近更新 更多