2012-08-13 83 views
1

這應該是一個基本的問題,但是我經過幾個小時的搜索後根本得不到它。問題是,我如何在Drupal 7中主題菜單塊?如何在Drupal中主題菜單塊?

我已經根據主菜單創建了三個不同的塊。現在我想:

  1. 所有三個街區創建獨特的HTML,這意味着對矯正周圍的包裝和建立菜單中的<ul><li>。我想設置特殊類並刪除所有Drupal添加的東西

  2. 將不同的類附加到每個塊內的不同級別。其中一個塊將顯示菜單的兩個級別,即它將顯示子菜單。我想設置一個特殊的班級上的子菜單...

這似乎是不可能的... :(

預先感謝您的幫助!!!!

+1

關於Drupal的確切問題的答案:http://drupal.stackexchange.com/questions/7274/how-to-theme-a-menu-block – claws 2014-02-24 08:11:16

回答

0

我建議先從安裝Zen主題開始,按照主題內的說明設置初學者子主題,其中包含在drupal中學習主題所需的所有信息,甚至可以添加自己的樣式表等。

這將允許您開始編輯菜單塊的模板並設置你自己的html包裝和類。

有關塊設置額外的課程,我會使用這個模塊: http://drupal.org/project/block_class

然後,只需編輯塊,你會看到一個額外的部分來加入更多的類塊。

+0

嗨,我知道主題......這只是菜單塊似乎沒有遵循標準的.tpl.php文件的東西...我想知道的是如何修改菜單塊輸出的HTML ... – Joel 2012-08-13 13:53:19

+0

啊好的如何嘗試區域塊覆蓋模板? 例如block - [regionname] .tpl.php – 2012-08-13 14:03:15

+0

不幸的是,塊tpl只能讓我爲武器創建html,所以一件事就解決了。我仍然遇到菜單創建的UL LI的HTML問題。在這裏,我想以某種方式循環通過菜單,並根據我在層次結構中的級別添加不同的HTML ... – Joel 2012-08-13 14:25:38

8

主題是一個棘手的野獸,通常會根據您需要做的事情而變化很大。即使有你非常詳細的描述,我仍然可以說「這取決於」,但這裏有幾個步驟可以幫助你指出正確的方向。

步驟1:由咖啡因上癮者的建議使用塊tpl.php。如果您不確定如何命名.tpl.php,我推薦使用Theme Developer模塊。這是錯誤的,但你可以用它來選擇一個特定的元素,並讓它告訴你命名.tpl.php文件的建議。

Outlining candidate template files from devel themer

步驟2:使用在的template.php一個主題/預處理函數來修改預定義的變量和標記。請務必查看api.drupal.org上關於起點的theme_menu_tree & template_preprocess_menu_tree函數。如果您使用的是devel module,請在每個人中使用dpm($variables);以查看您從一開始就必須處理的內容。

我希望有幫助!我同意咖啡因冰火當他說superfish可能是一種選擇。您也應該查看menu block模塊,以便將條件子部分分解爲它們自己的塊。

1

除了davidneedham所說的,要改變Drupal添加到菜單HTML標籤的內容,您可以覆蓋它們。這是添加類:

<ul class="expanded"> 
    <li class="firstleaf">...<li> 
    ... 
</ul> 

我沒有找到一個方法來消除這一類,但是你可以重寫他們在你block--system--main_menu.tpl.php文件,如:

li.expanded, 
li.collapsed, 
li.leaf { 
    padding: 0 0 0 0; 
    margin: 0; 
} 
ul.menu li { 
    margin: 0 0 0 0; 
} 

,然後打印您的菜單內容:

<?php echo $content; ?> 

我在Drupal是全新的,希望我的帖子能幫助你! :)