我有一个包含三个模块位置的盒子。现在目标是当一个模块位置单独加载时,它的宽度应该是盒子的100%;当两个模块的位置加载时,每个模块的宽度应为50%;最后当所有三个位置都加载时,每个位置应该是33%。 如何用最少的编码设置这个条件? 我的代码现在是这样的:
<?php if ($this->countModules( 'user1 or user2 or user3' )) : ?>
<div style="width:860px; margin:10px auto;">
<?php if ($this->countModules( 'user3' )) : ?>
<div style="width:33%; float:left; min-height:100px;"><jdoc:include type="modules" name="user3" style="xhtml" /></div>
<?php endif; ?>
<?php if ($this->countModules( 'user2' )) : ?>
<div style="width:34%; float:left; min-height:100px;"><jdoc:include type="modules" name="user2" style="xhtml" /></div>
<?php endif; ?>
<?php if ($this->countModules( 'user1' )) : ?>
<div style="width:33%; float:left; min-height:100px;"><jdoc:include type="modules" name="user1" style="xhtml" /></div>
<?php endif; ?>
</div>
<?php endif; ?>
<小时/> 更多解释:
我认为要定义每个特殊条件,但是这样我不知道如何将“三个”(或更多)位置相互比较。我知道当我想要显示两个位置中的一个(而不是两个位置)时,我应该使用它:
<?php if ($this->countModules( 'user1 xor user2' )) : ?>>
但是,如果我想同时将一个位置与两个其他位置进行比较;代码是什么?有些类似的事情:?
<?php if ($this->countModules( 'user1 xor user2 or user3' )) : ?>
在上面的代码中我想显示只是 user1或仅 user2或user3位置之一。这是真的吗?
由于
答案 0 :(得分:1)
这比那简单得多:一秒钟,忘记了joomla-countModules-funkyness。然后你可以很快得到模块的数量:
$nbColumns = (bool) $this->countModules( 'user1' ) + (bool) $this->countModules( 'user2' ) + (bool) $this->countModules( 'user3' );
$widthColumn = 100.0 / $nbColumns;
将coutModules-Return转换为布尔值是$this->countModules( 'user1' ) ? 1 : 0
的快捷方式。
答案 1 :(得分:0)
此外,这应该可以使用纯HTML / CSS。我记得如果你制作一个列大小为“100%”且固定宽度的表格,浏览器会自动缩放它以符合列数:
<table style="width:400px;">
<tr>
<td width="100%">
cell 1
</td>
<td width="100%">
cell2
</td>
</tr>
</table>
我怀疑这是符合HTML标准的,但是......