0

我进入 Drupal 的第二天并且很困惑......我需要在 body 标记中添加一个唯一的类名来标识每个页面,因为整个站点的每个页面上都有许多独特的样式(重复元素)。

我在网上找到了几个代码片段,但它们没有用。例如,我已将此添加到template.php文件中,但它不起作用:

function testtheme_preprocess_html(&$vars) { // my theme is called "testtheme"
  $path = drupal_get_path_alias($_GET['q']);
  $aliases = explode('/', $path);

  foreach($aliases as $alias) {
    $vars['classes_array'][] = drupal_clean_css_identifier($alias);
  } 
}

假设在 body 标签中添加一个类,但我没有显示任何内容。我错过了什么还是有人可以提供另一种解决方案?

4

3 回答 3

0

Rainfall 的答案是正确的,但是:在 body 元素 page-NAMEPAGE 中的 drupal 中已经有唯一的逐页分类

于 2012-12-03T16:48:34.607 回答
0

抱歉,如果我没有正确理解您的意思,但是您可以在 html.tpl.php 文件中的 body 标记中添加代码,使其看起来像这样:

<body class="<?php print $classes; ?>" <?php print $attributes;?>>

就这样。之后,您的 body 标签将根据页面自动具有 css 类。此外,您还将获得有关节点类型的信息、有关用户是否登录的信息、节点 ID。

让我知道它是否有效或者我是否犯了一些错误。谢谢,祝你好运!

于 2012-12-03T09:21:37.987 回答
0

您可以修改https://www.drupal.org/project/node_class模块:

1)在node_class.module中注释函数node_class_preprocess_node

2) 插入

$node_classes = node_class($node);
if (!empty($node_classes)) $node_classes .= ' ';
$content_column_class = str_replace(' class="','', $content_column_class);
$content_column_class = ' class="'. $node_classes . $content_column_class;

在 page.tpl.php 之前

<section<?php print $content_column_class; ?> id="content_col">
于 2016-06-21T18:27:37.763 回答