2011-07-17 8 views
1

私は3つのモジュールの位置を含むボックスを持っています。今は、モジュールの位置が単独でロードされ、その幅がボックスの100%でなければなりません。 2つのモジュールがロードされたとき、それぞれの幅は50%にする必要があります。最終的に3つのポジションがすべてロードされると、1つは33%になるはずです。 最小限のコーディングでこの条件を設定するにはどうすればよいですか? 私のコードは次のようなものです:joomla上の高度な条件付きモジュールの位置

<?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; ?> 


もっと説明:

私はすべての特別な条件を定義すると思いますが、このように私は「3」(以上を比較する方法がわかりません)の位置を互いに一致させる。私は同時に他の二つの位置に一つの位置を比較したい場合

<?php if ($this->countModules('user1 xor user2')) : ?>> 

しかし:つまり、私は、私はちょうど2つの位置の1(とないそれらの両方)を表示したいとき、私はこれを使用する必要があります知っています;コードは何でしょうか?同じようなsomethings:?上記のコードで

<?php if ($this->countModules('user1 xor user2 or user3')) : ?> 

私はちょうど user1のかだけ 1ユーザー2またはユーザー3位のを示したいと思います。本当ですか?

おかげ

答えて

1

それはそれよりもはるかに簡単です:第二のために、Joomlaの-countModules-funkyness忘れます。そして、あなたはかなり迅速モジュールの数を取得することができます:ブールにcoutModules-リターンを変換

$nbColumns = (bool) $this->countModules('user1') + (bool) $this->countModules('user2') + (bool) $this->countModules('user3'); 
$widthColumn = 100.0/$nbColumns; 

$this->countModules('user1') ? 1 : 0のショートカットです。

0

また、プレーンHTML/CSSでも可能です。しかし、私は疑う

<table style="width:400px;"> 
<tr> 
    <td width="100%"> 
    cell 1 
    </td> 
    <td width="100%"> 
    cell2 
    </td> 
    </tr> 
</table> 

これはHTML-規格に準拠している:私はあなたがカラムサイズ「100%」と一定の幅を持つテーブルを作る場合は、ブラウザが自動的に列数に適合するようにスケーリングしていることを思い出します...