joomla上的高级条件模块位置

时间:2011-07-17 14:46:02

标签: php module joomla conditional

我有一个包含三个模块位置的盒子。现在目标是当一个模块位置单独加载时,它的宽度应该是盒子的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位置之一。这是真的吗?

由于

2 个答案:

答案 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标准的,但是......