我想使用if语句选择具有<body class="section-category">
的特定页面,并仅为这些页面输出自定义内容。
我的PHP不是很好,我希望这是一项非常简单的任务。谁能给我一个提示?
答案 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,所以你甚至可以使用(例如,部分)模块提供的任何功能。