2010-09-20 94 views
0

我正在創建一個小型預訂系統。您可以創建可以保存的類型節點,如投影機。 我有一個正常顯示的日曆視圖。我爲節點引用添加了一個參數,但是我在定義頁面回調時遇到了問題。 有人可以幫我嗎?Drupal:創建視圖的菜單項

現在我要爲不同的節點

function your_module_menu() { 
$nodeid //semantic, node is loaded right 
    $items['reservate/nodeid/$year-w$week'] = array(// semantic, url is built right 
     'title' => t('Your Module Name'), 
     'description' => t('Menu's description.'), 
     'page callback' => 'page_callback_funtion', 
     'page arguments' => array('page callback arguments'), 
     'access callback' => 'your_module_access',   // the function that validates access based on the user's role(s). 
     'access arguments' => array(array(role1', 'role2')), // list of roles authorized - note nested array. 
     'type' => MENU_NORMAL_ITEM, 
    ); 
    return $items; 
} 

@edit

好吧,也許我沒有解釋好:)創建菜單項。我有一個內容類型:單位,可以保留。對於我創建的每個單元,我想生成一個菜單項(我可以在節點保存或更新時執行菜單重建)。該菜單應鏈接到一個視圖,其中節點id(單位)作爲url中的一個參數。

回答

0

我發現了一個很簡單的方法來做到這一點,我剛剛創建的視圖塊,其創建的鏈接與一些過濾器。

簡單,正是我需要的,似乎無法理解爲什麼我沒有想到的是越早

1

我不確定你到底想要做什麼,但是如果你的目標是創建一個菜單項,而不是你在自定義模塊中定義的新頁面,那麼應該在Drupal中使用菜單系統。您可以創建指向您網站上存在的任何網址的菜單項。
對於節點,這特別容易,因爲您可以直接在節點編輯/創建表單中執行此操作。

Drupal緩存菜單,所以你不能創建帶有動態部分的菜單項,比如用戶id等。如果你想做這樣的事情,你應該創建一個通用的回調,將用戶重定向到基於用戶的動態url或顯示內容。

更新

而不必每一個節點創建或刪除時間,這會不會很擴展到重建的菜單系統,你可以,而不是僅僅創造了新的菜單項,與hook_nodeapi,和當它被刪除時將其刪除。

+0

好的,也許我沒有解釋清楚:)。我有一個內容類型:單位,可以保留。對於我創建的每個單元,我想生成一個菜單項(我可以在節點保存或更新時執行菜單重建)。該菜單應鏈接到一個視圖,其中節點id(單位)作爲url中的一個參數。 – Nealv 2010-09-21 08:40:01

1

如果我理解正確的話,你想每次都自動創建一個菜單項新內容添加「單元」類型的節點。如果這是正確的,我建議使用模塊規則和一小段PHP來在各種系統事件(如內容創建)上創建自定義菜單項。您可能會發現我寫了一篇關於這個話題有用的教程:

http://jan.tomka.name/blog/programmatically-creating-menu-items-drupal

的想法很簡單:建立規則模塊中的規則,將節點創建或刪除被解僱和使用Drupal的動作googletorp已經提到實際操作菜單項的API調用。