【发布时间】:2014-05-08 15:53:33
【问题描述】:
以防万一有人不熟悉 Joomla,countModules 是一个内置函数。另外请记住,我对 PHP 不是很熟悉。而且我对使用它还很陌生。请尽量保持任何解决方案简单易懂。谢谢。
我的问题是我可以浓缩一下吗:
if($this->countModules('Top1A and Top1B') >= 1) $modCellRow1 = "col2";
if($this->countModules('Top1B and Top1C') >= 1) $modCellRow1 = "col2";
if($this->countModules('Top1A and Top1C') >= 1) $modCellRow1 = "col2";
进入这个:
if ($this->countModules('Top1A and Top1B') >= 1) || ($this->countModules('Top1A and Top1B') >= 1) || ($this->countModules('Top1A and Top1C')
{
$modCellRow1 = "col2";
}
如果您知道 Joomla 和 countModules...或者即使您不知道,请记住,我正在检查每个模块位置是否有任何内容,而不是计算实际模块的数量。换句话说,我确实需要使用 AND 作为运算符。另外,我不想包含所有三个,因为这是我的代码中的另一行......例如:
if($this->countModules('Top1B and Top1B and Top1C') >= 1) $modCellRow1 = "col3";
我正在检查那些其他陈述是在两个模块位置中是否有东西......(即三个中只有两个等于或大于一个......但不是全部三个) .
补充意见/问题:
这会起作用吗?
$topRow1Count = 0;
foreach(array('Top1A','Top1B','Top1C','Top1D') as $position) {
if ($this->countModules($position)) {$colCount += 1;}
}
$modColCountTopRow1 = "col" . $topRow1Count;
if ($topRow1Count == 0) { $modTopRow1 = " hidden"; }
$topRow2Count = 0;
foreach(array('Top2A','Top2B','Top2C','Top2D') as $position) {
if ($this->countModules($position)) {$colCount += 1;}
}
$modColCountTopRow2 = "col" . $topRow2Count;
if ($topRow2Count == 0) { $modTopRow2 = " hidden"; }
if ($topRow1Count + $topRow2Count == 0) { $topModCont1 = " hidden"; }
【问题讨论】:
-
是的,如果您用括号更正错字,您可以。应该是
if ((cond1) || (cond2) || (cond2))或更好的if (cond1 || cond2 || cond3)。 -
Ahhh 所以 OR 语句需要在 () 内... 例如: if($this->countModules ('Top1A and Top1B' || 'Top1B and Top1C' || ' Top1A 和 Top1C') >= 1) $modCellRow2 = "col2";那正确吗?也希望你能正确回答我的问题,这样我就可以给你信用,而不是仅仅作为评论。 :P
-
不这样不行,你需要调用
countModules3次,像这样:if ($this->countModules('Top1A and Top1B') >= 1 || $this->countModules('Top1A and Top1B') >= 1 || $this->countModules('Top1A and Top1C') >= 1) -
谢谢...我想我现在明白了 :)