我一直在尋找一個高點來做到這一點。我想以編程方式創建一個正常的菜單項,鏈接到它的父項。類似於默認菜單任務的概念,但只是一個正常的菜單項。有沒有人曾經這樣做過?創建一個鏈接到它的父項的菜單項
我想要一些我可以用一個drupal鉤子做的事情。
我一直在尋找一個高點來做到這一點。我想以編程方式創建一個正常的菜單項,鏈接到它的父項。類似於默認菜單任務的概念,但只是一個正常的菜單項。有沒有人曾經這樣做過?創建一個鏈接到它的父項的菜單項
我想要一些我可以用一個drupal鉤子做的事情。
您只需要創建一個新的菜單項,它具有相同的路徑作爲其父項。
$items['parent'] = array(
'title' => 'I am parent',
'page callback' => 'drupal_get_form',
'page arguments' => 'get_parent',
'access arguments' => array('access parent'),
'type' => MENU_NORMAL_ITEM,
);
$items['parent/child'] = array(
'title' => 'I am child link of parent',
'page callback' => 'drupal_get_form',
'page arguments' => 'get_children_for_thisparent',
'access arguments' => array('access children of parent'),
'type' => MENU_NORMAL_ITEM,
);
這應該做的伎倆:)
@ gokul-n-k我不確定我是否明白你在暗示什麼。你只需使用hook_menu完成一個正常的菜單結構,並且我還沒有找到任何drupal函數或屬性,它告訴drupal菜單,子項路徑與其父路徑相同。我試圖實現與默認菜單任務完全相同的默認菜單項。 – lordg 2011-03-02 19:34:15
假設你想放置在主菜單下,
$item['form_example'] = array(
'title' => 'Example menu',
'description' => 'This is an example menu item',
'type' => MENU_NORMAL_ITEM,
'page callback' => 'custom_function',
'menu_name' => 'main-menu',
);
return $item;
你會再拿到主菜單(清除緩存)下的菜單項。訣竅是添加一個關鍵'menu_name'。
要獲取menu_name,請打開菜單管理頁面,然後單擊任何根菜單上的「編輯菜單」。 URL將會像'SITE_URL/admin/structure/menu/manage/main-menu/edit'。查看最後一個URL段(這裏是主菜單)。
對於第二種情況,您可能希望將其置於主菜單的主頁下。代碼是。
$item['form_example'] = array(
'title' => 'Example menu',
'description' => 'This is an example menu item',
'type' => MENU_NORMAL_ITEM,
'page callback' => 'custom_function',
'menu_name' => 'main-menu',
'plid' => 218,
);
return $item;
在這裏,我添加了一個關鍵PLID到關聯數組,它是菜單項(「家」在這裏)爲這將是一個孩子的MLID。對於這種情況,它將是主菜單的子項。
要獲得mlid,您必須按照上述步驟進行操作,轉到菜單管理頁面並單擊列表鏈接,然後單擊菜單項上的編輯,例如, SITE_URL/admin/structure/menu/item/218/edit,這樣你就可以得到mlid,從而完成它。
注意。如果您從後端更改此菜單層次結構或其他設置,您將始終具有重置選項來重置它,並且在重置之後它的行爲將與代碼中所述相同。
你是指用這個UI?我想要以編程方式執行此操作。 – lordg 2011-03-01 22:30:22
是的,這是通過用戶界面的意思。 Drupal API無法定義父子菜單關係,除此之外,他們的路徑。所以我不知道乾淨而簡單的方式來編程。 – berkes 2011-03-02 10:25:00