Acest tutorial prezinta modalitatea prin care trei module pozitionate unul langa altul, intr-un block, isi adapteaza latimea in functie de starea de publicare a lor.
Mai exact putem avea trei stari:
- Toate cele trei module sunt publicate, in acest caz fiecare avand 33% din latimea totala a spatiului;
- Doar doua module sunt publicate, fiacare cu 50% din latimea totala a spatiului;
- Doar un modul publicat, acesta dispunand de 100% din latimea totala a spatiului;
Vom numi cele trei module in felul urmator: USER1, USER2, USER3.
Urmatorul cod va fi inserat in portiunea <head> a fisierului index.php inainte de </head>
<?php
$blockmodules = 0;
if ($this->countModules('user1')) $blockmodules++;
if ($this->countModules('user2')) $blockmodules++;
if ($this->countModules('user3')) $blockmodules++;
if ( $blockmodules == 3 )
{
$divwidth = '32%';
}
else if ($blockmodules == 2)
{
$divwidth = '49%';
}
else if ($blockmodules == 1)
{
$divwidth = '99%';
}
?>
Urmeaza constructia modulelor in interiorul <body></body>
Vom atribui id-ul "user" block-ului ce contine cele trei module.
De asemenea, vom dori ca toate DIV-urile care contin module sa fie afisate numai daca cel puţin un modul este publicat :
<?php if($this->countModules('user1') || $this->countModules('user2') || $this->countModules('user3')) : ?>
<div id="users">
Apoi inseram scriptul de afisare modul in cazul in care acesta este publicat.
<?php if($this->countModules('user1')) : ?>
Si aplicarea clasei acestuia
<div id="moduser1" <?php if ( $blockmodules < 4 ):echo ('style="width:'.$divwidth.';"');
endif;?>>
Rezultatul final este:
<?php if($this->countModules('user1') || $this->countModules('user2') || $this->countModules('user3')) : ?>
<div id="users">
<?php if($this->countModules('user1')) : ?>
<div id="moduser1" <?php if ( $blockmodules < 4 ):echo ('style="width:'.$divwidth.';"'); endif;?>>
<jdoc:include type="modules" name="user1" style="rounded" />
</div>
<?php endif; ?>
<?php if($this->countModules('user2')) : ?>
<div id="moduser2" <?php if ( $blockmodules < 4 ):echo ('style="width:'.$divwidth.';"'); endif;?>>
<jdoc:include type="modules" name="user2" style="rounded" />
</div>
<?php endif; ?>
<?php if($this->countModules('user3')) : ?>
<div id="moduser3" <?php if ( $blockmodules < 4 ):echo ('style="width:'.$divwidth.';"'); endif;?>>
<jdoc:include type="modules" name="user3" style="rounded" />
</div>
<?php endif; ?>
<div></div>
</div>
<?php endif; ?>
.clr {clear:both;} //*
* a fost atasata proprietatea ‘clear’ deoarece modulele trebuie afisate unul langa altul, intr-un block, pe un singur rand.