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.
{loadmodule module, title, style}
Mon code actuel était {loadmodule mod_custom, mymodule, none}
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;
}
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?
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
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.
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.