下面是我的if条件,说明如何根据模块是否位于"左"或"右"位置,或者模块是否同时位于"左’和"右"来显示结构。
模块处于"左"或"右"位置的条件有效。但是,如果我在"左"answers"右"位置都有一个模块,则只显示"左"位置的模块,而不显示"右"位的模块。
有人能帮我解决问题吗?
<?php if($this->countModules('left')) : ?>
<!-- Content Region with Left Column: Start -->
<div class="contentholder onecol">
<div class="contentcol colleft">
<jdoc:include type="modules" name="left" style="xhtml" />
<div class="clear"></div>
</div>
<div class="contentbody">
<jdoc:include type="message" />
<jdoc:include type="component" />
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<!-- Content Region with Left Column: End -->
<?php elseif($this->countModules('right')) : ?>
<!-- Content Region with Right Column: Start -->
<div class="contentholder onecol">
<div class="contentbody">
<jdoc:include type="message" />
<jdoc:include type="component" />
<div class="clear"></div>
</div>
<div class="contentcol colleft">
<jdoc:include type="modules" name="right" style="xhtml" />
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<!-- Content Region with Right Column: End -->
<?php elseif(($this->countModules('left')) && ($this->countModules('right'))) : ?>
<!-- Content Region with Left & Right Column: Start -->
<div class="contentholder twocol">
<div class="contentcol colleft">
<jdoc:include type="modules" name="left" style="xhtml" />
<div class="clear"></div>
</div>
<div class="contentbody">
<jdoc:include type="message" />
<jdoc:include type="component" />
<div class="clear"></div>
</div>
<div class="contentcol colleft">
<jdoc:include type="modules" name="right" style="xhtml" />
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<!-- Content Region with Left & Right Column: End -->
<?php else : ?>
<!-- Content Region with No Columns: Start -->
<div class="contentholder">
<div class="contentbody">
<jdoc:include type="message" />
<jdoc:include type="component" />
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<!-- Content Region with No Columns: End -->
<?php endif; ?>
问题似乎是我的条件顺序造成的。条件:
<?php elseif(($this->countModules('left')) && ($this->countModules('right'))) : ?>
应该排在第一位而不是第三位。
原因似乎是因为满足了原始第一个条件中的"left"模块,所以if语句在那里终止。因此,通过添加"left"&;'如果不满足"right"条件,则代码继续查看是否只有"left"模块或"right"模块。