我设置了一个语句来确定是否存在drupal块,并根据可用的块数给出一个类。
<?php if($page['sidebar_first'] || $page['sidebar_second']) {
$contentwid= "eleven";
} else {
$contentwid= "sixteen";
} ?>
<?php if($page['sidebar_first'] && $page['sidebar_second']) {
$contentwid= "seventeen";
} else {
$contentwid= "sixteen";
} ?>
<div id="content" class="<?php print $contentwid; ?> columns">
</div>
第二个语句工作正常,如果第一个侧栏中有一个块而第二个侧栏中有一个块,那么主要内容的类别为十七个。
问题在于OR(||)的第一个语句。如果任一侧边栏中都有一个块,那么内容总是被赋予十六级的全宽,并将侧边栏内容推到底部。
并不重要。我知道它正确检测侧边栏,因为第二个语句完美无缺。我已正确设置其他所有内容,并将其追溯到此OR语句,该语句似乎总是导致FALSE(十六)。
我试过了||和OR,但据我所知,他们没有什么不同,只是用户偏好吗?
我很难过。
答案 0 :(得分:3)
它正在执行第一个if
(or
)并正确设置$contentwid
,但是 然后 它仍然执行第二个if
(and
)并失败,因此执行else
,将$contentwid
重置为&#34;十六岁&#34;
<?php if($page['sidebar_first'] || $page['sidebar_second']) {
$contentwid= "eleven";
} else {
$contentwid= "sixteen";
} elseif($page['sidebar_first'] && $page['sidebar_second']) {
$contentwid= "seventeen";
} else {
$contentwid= "sixteen";
} ?>
虽然您可能想要反转&#34;和&#34;和&#34;或&#34;防止and
失败
<?php if($page['sidebar_first'] && $page['sidebar_second']) {
$contentwid= "seventeen";
} elseif($page['sidebar_first'] || $page['sidebar_second']) {
$contentwid= "eleven";
} else {
$contentwid= "sixteen";
} ?>