Drupal:如果是page.tpl.php的语句(取决于页面部分)

时间:2010-10-24 21:57:21

标签: php class drupal if-statement

我想使用if语句选择具有<body class="section-category">的特定页面,并仅为这些页面输出自定义内容。

我的PHP不是很好,我希望这是一项非常简单的任务。谁能给我一个提示?

3 个答案:

答案 0 :(得分:1)

我不会检查是否存在某个身体类别。这些类只是其他if-else逻辑的结果,它们很容易被覆盖或更改,从而破坏了您的页面模板。最好检查这些类所基于的值。如果我是你,我会试着弄清楚这个身体类是如何生成的并重新使用该代码。

例如,如果您的主题的template.php执行如下操作:

$body_classes[] = 'section-' . form_clean_id(arg(0));

然后我会把它放在我的template.php中:

<?php if (form_clean_id(arg(0)) == 'category'): ?>
  // Do fancy stuff!
<?php endif; ?>

答案 1 :(得分:0)

我会研究像Context或Panel这样的模块来做这件事 - 从长远来看,它会比编码更好地为你服务。

答案 2 :(得分:0)

听起来你想为某些页面提供一个标志;一个你可以在你的主题中读出并采取行动的人。

在template.php中:

function YOURTHEME_preprocess_page(&$vars) { //Many themes already have this function implemented
  if (stripos($vars['foo-bar'], 'section')) {
    $vars['is_section'] = TRUE;
  }
  else {
    $vars['is_section'] = FALSE;
  }
}

然后在你的page.tpl.php

<?php if ($is_section): ?>
    <p>I am in a section</p>
<?php endif; ?>

这样你就可以保留它所属的逻辑:在预处理器中。并且你将逻辑排除在模板之外,它绝对不属于模板! if (stripos($vars['foo-bar'], 'section')) {最有可能变得更聪明,如果你在那里var_dump($vars),所有可用的变量都将在你的屏幕(浏览器)上转储。我确信你会找到一个可以检查的变量,这比一个身体类更不“模糊”。毕竟:该课程仅用于一件事:作为body-tag中的类。而不是检查你是否在某个部分。 你也可以使用完整的Drupal,所以你甚至可以使用(例如,部分)模块提供的任何功能。