2011-12-05 84 views
1

在Drupal 7中,我希望網站具有不同的部分,左側導航菜單根據您所在的頁面進行切換。例如,我想要一個頂級導航,將您帶到一個部分,然後在該部分中該菜單對它是唯一的。我假設我必須在我的template.php文件中創建一個主題函數來處理這個問題。有人能給我一個如何開始編碼的想法嗎?Drupal 7 - 以編程方式在網站上切換菜單

回答

4

我不是100%肯定,我跟着你,但如果我這樣做,那麼你可以使用菜單塊模塊做到這一點 - http://drupal.org/project/menu_block

如果你在談論的水平:

如果您已經有了一個多層次的菜單,但只想顯示父級項目具有第二級別的頁面上的第二級別,然後你可以去結構 - >塊 - >新菜單塊並選擇你想要的菜單,什麼菜單級別來啓動菜單,然後將其添加到您想要的常規塊。

一個例子是:

<ul class="menu"> 
     <li>Menu item 1</li> 
     <li>Menu item 2</li> 
      <ul class="menu"> 
      <li>Menu item</li> 
      <li>Menu item</li> 
      </ul> 
     <li>Menu item 3</li> 
     <li>Menu item 4</li> 
     <li>Menu item 5</li> 
    </ul> 

你的主菜單中只顯示了菜單項,在一個級別上。

你的菜單塊將被設置爲從二級開始,所以如果你在菜單項2的頁面上,你的菜單塊會顯示二級菜單項。

如果你不是在談論級別:

你可以單獨的菜單塊,然後將它們轉到塊的可見性設置,然後鍵入的節點別名設置爲只出現在某些網頁頁面上,並從單選按鈕中選擇「僅列出的頁面」。

+0

我不是在談論關卡,但這是有幫助的。假設我有一個關於我們的部分,另一個部分叫做程序,當您在網站的這些部分時,我需要不同的菜單。 – bradrice

+0

好的,看答案底部的新部分。 – SpaceBeers

+0

在這種情況下,您將創建兩個1級菜單。關於我們和計劃。然後在每個菜單下添加子菜單項並在答案中使用該模塊。 我已在此頁面上使用它:http://www.samsound.se/reklamproduktion與http://www.samsound.se/portfolio相比較 – Kristoffer

0

而不是使用@SpaceBeers的建議,我會解決使用Context您的問題:

  • 我會定義一個不同的菜單,每一個獨特的頁面。
  • 使用上下文,您可以將每個部分與菜單相關聯。您將爲每個部分定義一個單獨的上下文。
  • 在上下文中,您可以在上下文的規則中指定該部分的相對路徑。然後在上下文響應中選擇由菜單自動創建的Drupal塊。

作爲一個加號,因爲上下文是出口品,你可以把它們打包成一個Feature,提交該功能爲您的源代碼控制庫,並部署到您的DEV,QA和PROD箱,而不必手動複製從服務器到服務器的菜單/塊定位設置。換句話說,Context + Features解決方案將長期提供更強大和可擴展的解決方案。