1

这确实应该是一个基本问题,但经过数小时的搜索,我根本没有得到它。问题是,如何在 Drupal 7 中为菜单块设置主题?

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

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

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

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

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

4

3 回答 3

8

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

第 1 步:按照 Caffeine Addict 的建议使用块 tpl.php。如果您不确定如何命名 .tpl.php,我建议您使用Theme Developer模块。它有问题,但您可以使用它来选择特定元素并让它告诉您命名 .tpl.php 文件的建议。

概述来自开发主题的候选模板文件

第 2 步:使用 template.php 中的主题/预处理函数来修改预定义的变量和标记。请务必查看 api.drupal.org 上的theme_menu_treetemplate_preprocess_menu_tree函数以获取起点。如果您使用的是devel 模块dpm($variables);请在每个模块中使用以从一开始就查看您必须使用的内容。

我希望这会有所帮助!我同意咖啡因瘾君子的说法,他说超级鱼可能是一种替代品。您还应该查看菜单块模块,以将条件子部分分解为它们自己的块。

于 2012-08-15T03:12:39.167 回答
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 的新手,希望我的帖子可以帮助到你!:)

于 2013-01-06T07:19:24.980 回答
0

我建议从安装 Zen 主题开始,然后按照主题内的说明设置启动子主题。这包含了在 drupal 中学习主题以及如何添加自己的样式表等所需的所有信息。

这将允许您开始编辑菜单块的模板并设置您自己的 html 包装器和类。

为了在块上设置额外的类,我会使用这个模块: http ://drupal.org/project/block_class

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

于 2012-08-13T13:47:58.397 回答