这应该是一个基本问题,但我只是在经过数小时的搜索后才得到它。问题是,如何在Drupal 7中使用主题菜单块?
我根据主菜单创建了三个不同的块。现在我想:
为所有三个块创建唯一的HTML,这意味着修改周围的包装器以及构建菜单的<ul>
和<li>
。我想设置特殊课程并删除所有Drupal添加的东西
将不同的类附加到每个块中的不同级别。其中一个块将显示菜单的两个级别,即它将显示一个子菜单。我想在子菜单上设置一个特殊的类......
这似乎不可能...... :(
提前感谢您的帮助!!!!
答案 0 :(得分:8)
主题是一种棘手的野兽,根据你的需要经常变化很大。即使有你非常详细的描述,我仍然可以说“这取决于”,但这里有几个步骤可以帮助你指明正确的方向。
第1步:按照Caffeine Addict的建议使用阻止tpl.php。如果您不确定.tpl.php的名称,我推荐使用Theme Developer模块。这是错误的,但您可以使用它来选择一个特定的元素,并告诉您有关.tpl.php文件命名的建议。
步骤2:使用template.php中的主题/预处理函数来修改预定义的变量和标记。请务必查看theme_menu_tree&amp; template_preprocess_menu_tree在api.drupal.org上发挥作用。如果您使用的是devel module,请在每个dpm($variables);
中使用{{1}},以便从一开始就了解您必须使用的内容。
我希望有所帮助!当他说superfish可能是另一种选择时,我同意Caffeine Addict。您还应该查看menu block模块,将条件子部分分解为各自的块。
答案 1 :(得分: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的新人,希望我的帖子可以帮到你! :)
答案 2 :(得分:0)
我建议首先安装Zen主题,然后按照主题中的说明设置启动子主题。这包含了在drupal中学习主题所需的所有信息,甚至包括如何添加自己的样式表等。
这将允许您开始编辑菜单块的模板并设置您自己的html包装器和类。
要在块上设置额外的类,我将使用此模块: http://drupal.org/project/block_class
然后只需编辑该块,您将看到一个额外的部分,用于向块添加其他类。