如何在Drupal中设置菜单块的主题?

时间:2012-08-13 13:39:54

标签: drupal-7 drupal-theming drupal-navigation

这应该是一个基本问题,但我只是在经过数小时的搜索后才得到它。问题是,如何在Drupal 7中使用主题菜单块?

我根据主菜单创建了三个不同的块。现在我想:

  1. 为所有三个块创建唯一的HTML,这意味着修改周围的包装器以及构建菜单的<ul><li>。我想设置特殊课程并删除所有Drupal添加的东西

  2. 将不同的类附加到每个块中的不同级别。其中一个块将显示菜单的两个级别,即它将显示一个子菜单。我想在子菜单上设置一个特殊的类......

  3. 这似乎不可能...... :(

    提前感谢您的帮助!!!!

3 个答案:

答案 0 :(得分:8)

主题是一种棘手的野兽,根据你的需要经常变化很大。即使有你非常详细的描述,我仍然可以说“这取决于”,但这里有几个步骤可以帮助你指明正确的方向。

第1步:按照Caffeine Addict的建议使用阻止tpl.php。如果您不确定.tpl.php的名称,我推荐使用Theme Developer模块。这是错误的,但您可以使用它来选择一个特定的元素,并告诉您有关.tpl.php文件命名的建议。

Outlining candidate template files from devel themer

步骤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

然后只需编辑该块,您将看到一个额外的部分,用于向块添加其他类。