Drupal 7 - 如何为每个页面添加唯一的类名?

时间:2012-11-30 04:15:24

标签: drupal drupal-7

我是第二天进入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标签中添加一个类,但没有任何东西出现在我面前。我错过了某些东西,或者有人能提供另一种解决方案吗?

3 个答案:

答案 0 :(得分:0)

很抱歉,如果我没理解你,但你可以在你的html.tpl.php文件中添加代码到body标签,使它看起来像这样:

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

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

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

答案 1 :(得分:0)

Rainfall的答案是正确的,但是: 在body元素页面-DAMEPAGE

中已经在drupal中逐页进行了

答案 2 :(得分: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">