web-dev-qa-db-fra.com

Comment empêcher le rendu des modules vides?

Comment empêcher l'affichage d'un module à la position attribuée si aucune sortie n'est rendue? Pourquoi publier un module vide? Eh bien, ce n'est pas toujours vide, mais si certaines conditions ne sont pas remplies, il n'y a pas de sortie à afficher, mais la position vide dans laquelle elle est publiée est toujours là.

Je l'ai googlé, mais je n'ai trouvé que des exemples de la version 1.5, et ce sont tous des bidouilles ou des modifications de modèles. Est-ce que cela a été adressé/corrigé dans v3 +, et si oui, comment puis-je y arriver.

4
GDP

Si le module ne renvoie aucune sortie (return false), rien ne sera généré, pas même le style de module/chrome (ref: JDocumentRendererModules fonctionne)).

5
Anibal

Je vérifie si le contenu de n'importe quel module de la position de module donnée est vide ou non. Combiné avec $ this-> countModules (): la position du module est simplement affichée lorsqu'il y a des modules et que le contenu n'est pas vide.

function modulesHaveContent( $position ) {  
    $modules = JModuleHelper::getModules( $position );

    foreach($modules as $module) {
        if (!empty($module->content)) {
            $moduleHasContent = true;
        }
    }

    return $moduleHasContent;
}
2
RedNails

En fin de compte (et comme il se doit), Joomla laisse la présentation de la sortie au modèle. Ils semblent généralement utiliser $module->count pour effectuer cette détermination, et sans la coopération du modèle pour examiner la sortie, il est parfaitement logique que le bloc vide apparaisse.

J'ai cependant trouvé une solution - Dans mon cas, les pages ayant une sortie de module conditionnelle sont tous des articles com_content. J'ai donc écrit un plugin de contenu qui récupère la sortie du module. Si le module renvoyait quelque chose à afficher, je modifiais la sortie de l'article avec. À l'aide de CSS, j'ai été en mesure de positionner la sortie du module de la manière dont j'avais besoin, et j'ai accompli ce que j'essayais de faire.

1
GDP