web-dev-qa-db-fra.com

Chrome problème: Comment supprimer la div class = "custom" d'un module Joomla

Vous pouvez également trouver cette question pertinente si vous essayez de résoudre le problème "Comment empêcher les modules Joomla d'être encapsulés dans des divs".

Quel est le problème?

Lorsque vous incluez un module dans Joomla, il est enveloppé dans une balise div, comme indiqué ci-dessous.

<div class="custom">
 Module content
</div>

Je ne veux pas que le module soit encapsulé/emballé dans quoi que ce soit. Comme cela pose des problèmes avec la mise en page. Dans certaines situations, je pouvais résoudre le problème avec un style CSS, mais ce n'est pas le cas dans toutes les situations.

Ma configuration et mes tentatives infructueuses

Le module que j'essayais de styler était inclus via un article.

  1. Définir le style sur none dans l'article- {loadmodule module, title, style} Mon code actuel était {loadmodule mod_custom, mymodule, none}
  2. Définir le style sur none en accédant à Extensions -> Gestionnaire de modules puis en cliquant sur le module pour lequel je ne voulais pas être enveloppé dans des divs. Puis en choisissant Avancé -> Style du module = Aucun . configure module chrome style via settings

J'étais sûr que ce qui précède aurait dû fonctionner. Le code responsable du style ci-dessus était en templates/system/html/modules.php et il a montré

/*
 * none (output raw module content)
 */
function modChrome_none($module, &$params, &$attribs)
{
    echo $module->content;
}
  1. L'échec suivant, je suis allé à Extensions -> Gestionnaire de plugins -> Modules de chargement de contenu - a changé la valeur en sans retour à la ligne. (sortie brute) . Plugin- Content Load set to raw

Cela n'a pas fonctionné non plus! WoopDeeDoo! Je pouvais encore voir que le module était enveloppé dans une div avec class=”custom”

Comment puis-je résoudre ce problème?

4
TryHarder

La solution consistait à créer une substitution de module de \modules\mod_custom\tmpl\default.php

Le code incriminé dans ce fichier était

<div class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
    <?php echo $module->content;?>
</div>

J'ai pris le code ci-dessus, édité et mis dans un remplacement à templates/current-site-template/mod_custom/default.php Le nouveau code était

<?php echo $module->content;?>

Cela a résolu le problème.


Informations supplémentaires

À ma connaissance, le remplacement supprime les divs de tous les modules publiés sur mon site. Au début, j’ai pensé que cela n’était pas souhaitable, car dans certaines situations, je souhaitais toujours appliquer un style à des modules spécifiques, mais j’ai ensuite revu le code HTML. Voici à quoi ressemblait le code HTML avant la substitution de module a été appliqué et un style chromé aucun a été utilisé

<div class="custom"  >
    Module content
</div>    

Voici à quoi ressemblait le code HTML avant la substitution de module était appliqué et un style chrome de html5 était utilisé

<div class="moduletable">
    <div class="custom"  >
        Module content
    </div>
</div>

Cela signifie que si je devais le faire, je pourrais toujours appliquer un div personnalisé et une classe à des modules spécifiques tout en utilisant la substitution de module. Si je choisissais le style chrome html5 je voudrais

<div class="moduletable">   
    Module content  
</div>

et si j’utilisais le remplacement avec un style chrome de none je voudrais juste

Module Content
6
TryHarder

Nous avions le même problème avec ce module. C'est peut-être quelque chose avec la version plus récente de Joomla que nous utilisons mais nous n'avons pas pu obtenir la réponse de oooooo . Vous devez suivre une nouvelle structure de répertoires (Nous utilisons Joomla 3.6.2). Vous devez placer vos remplacements dans un répertoire " html " dans votre modèle.

https://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core

PATH_TO_JOOMLA/components/com_content/views/article/tmpl/default.php
to
TEMPLATE_NAME/html/com_content/article/default.php

Voici un autre exemple utilisant un module

PATH_TO_JOOMLA/modules/mod_login/tmpl/default.php
to
TEMPLATE_NAME/html/mod_login/default.php

Je devais créer un modèle vierge default.php pour mod_custom contenant uniquement

<?php echo $module->content;?>

et le mettre dans

/templates/my-templates/html/mod_custom/default.php

Ce n’est qu’alors que j’ai été en mesure de supprimer tout le surplus de matière que Joomla enveloppe autour de mes modules. Il devrait y avoir une option pour afficher uniquement le module HTML, et rien de plus.

2
Eko3alpha

Pour supprimer le wrapper "moduletable", créez simplement un style de module:

Dans le dossier templates/your_template/html, créez un fichier nommé "modules.php":

<?php    
    function modChrome_BoHivex($module, &$params, &$attribs) { 
        $module_class_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
        ?>
        <div class="custom<?php echo $moduleclass_sfx; ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage'); ?>)"<?php endif; ?> >
           <?php echo $module->content; ?>
        </div>
        <?php
    }

Vous pouvez ajouter plus de styles en ajoutant simplement de nouvelles fonctions, vous pouvez totalement personnaliser la sortie et vous débarrasser du wrapper "moduletable".

Vous pouvez trouver vos styles dans le backend de votre module -> avancé -> style du module.

Indice spécial: Il est possible de remplacer la pagination de com_content de la même manière en ajoutant un fichier pagination.php au dossier/html.

Pour se débarrasser de l'encapsuleur "personnalisé", ajoutez un remplacement à templates/your_template/html/mod_custom/your_override.php:

<?php
   defined('_JEXEC') or die;

   echo $module->content;

Il est possible de faire une sortie d'écho sans HTML dans la fonction style et d'afficher le code HTML dans le remplacement également.

1
Dennis Heiden