web-dev-qa-db-fra.com

Sortie de modules

Chaque modèle que je vois a cette manière de sortir des modules (dans le fichier index.php)

<?php if ($this->countModules( 'user1' )) : ?>
<jdoc:include type="modules" name="user1" style="rounded" />
<?php endif; ?>

À l'intérieur du modèle. Vérifie si le module existe et si oui, le sort Cependant, apparemment pour moi, l'inclusion du code suivant fonctionnera également à chaque fois, apparemment de la même manière.

<jdoc:include type="modules" name="user1" style="rounded" />

Si le module est attaché, il sera affiché, sinon il ne le sera pas. Alors, quel est l’avantage d’utiliser la méthode countmodules pour vérifier si le module existe?? Cela devrait-il toujours être la norme? Quel est l'avantage d'utiliser la 1ère méthode

3
Mg Gm

La fonction est extrêmement pratique lorsque votre modèle présente une flexibilité de grille complexe. Prenons les éléments suivants en considération:

Vous avez un modèle avec une grille de 12 colonnes.

_________________________
|               |       |
|               |       |
|               |       |
| main content  | side  |
|               |       |
|               |       |
|               |       |
|               |       |
-------------------------

    col-md-8     col-md-4

Ce qui a été généré par ce balisage HTML simple:

<div class="row">
    <div class="col-md-8">
        <p>main content</p>
    </div>
    <div class="col-md-4">
        <div class="side">
            <p>side</p>
        </div>
    </div>
</div>

À présent, il peut y avoir des pages pour lesquelles vous ne voulez pas du tout de barre latérale et faites en sorte que le contenu principal remplisse les 12 colonnes.

Dans ce cas, vous pouvez utiliser la fonction countModules() pour déterminer la taille de la colonne de contenu principale, selon que des modules ont été affectés ou non à la barre latérale:

<?php 
    $contentColSize = $this->countModules('side') ? 12 : 8;
?>

Donc, votre balisage final serait:

<div class="row">
    <div class="col-md-<?php echo $contentColSize ; ?>">
        <p>main content</p>
    </div>
    <?php if ($this->countModules('side')) : ?>
    <div class="col-md-4">
        <div class="side">
            <p>side</p>
        </div>
    </div>
    <?php endif; ?>
</div>

J'espère que ça clarifie un peu les choses

6
Lodder