2011-11-03 117 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