Chasse aux bugs des templates Warp

5518 vues
20 septembre 2016
Joachim
bug-joomla-warp

 

Voici une astuce qui concerne les templates Warp pour Joomla! qui sont abordés dans notre formation sur le templating Joomla

Les modules joomla sont en parties pris en charge avec les templates WARP. Quand je dis "en partie" c'est qu'il subsiste quelques bugs malgré tout, notamment avec l'utilisation d'"Advanced module manager" - l'extension qui tue en matière de gestion de module et que tout vrai site joomla! moderne se doit d'intégrer dans son site (rien que ça)

LES DEUX BUGS LES PLUS CONNUS :

1 ] Changer la classe ou le niveau du titre d'un module

Les titres des modules ont une class automatique gérée par warp : uk-panel-title si vous utilisez Yootheme par exemple...  de plus, ils sont par défaut en H3.. Si vous voulez passez votre titre de module en H2 et que vous voulez lui assigner une class spécifique, vous devez aller dans l'onglet "paramètres avancés" du module et remplir les champs suivant : params1

RESULTAT : rien du tout ! en front office, il s'en fout complètement ! ça ou autre chose, c'est du pareil au même... Pourquoi ? PARCE QUE le style du module par défaut ne prends pas en compte les paramètres précédents ! il faut donc passer l'option "Style du module" de "Hérité" à "html5" comme suit :

params2

ET LA STUPEFACTION ! ça marche mais à moitié seulement !!!

Maintenant, nous avons notre titre de module configuré qui apparaît ET le titre par défaut :

result 1

EN EFFET warp continue d'afficher le titre du module par défaut et notre configuration ne fait qu'ajouter un titre sans supprimer celui par défaut... POURQUOI ? parce que WARP gère l'affichage des titres de module sans se soucier du paramètre "Style du module"... c'est là qu'il faut overrider le widget.php qui gère l'affichage des modules :

vous le trouvez ici : 

\templates\montemplate\layouts\widget.php

copiez le ici :

\templates\montemplate\styles\montemplate\layouts\widget.php

le petit code en plus consiste juste à récupérer les paramètres du module en question, de déjisonniser ces paramètres (s'pas français, je sais) et de rajouter un petit if en plus 

Il faut rajouter ces lignes de code après la partie //set title qui assigne une valeur à la variable $title.

$pars = json_decode($widget->params);
$style = $pars->style;

if($style=='System-html5')$title='';

Avec ça, enfin, on a bien UN SEUL titre en H2 avec la bonne class qui s'affiche en front office :result 2

 

2 ] Masquer un module vide

Normalement, il suffit juste de paramétrer correctement le module pour qu'il ne s'affiche que s'il y'a un contenu:cache

OR STUPEFACTION ! ça ne marche toujours pas ! j'ai des modules de liste qui n'ont aucun item qui s'affichent toujours !

Donc, je fais une recherche plus poussée... je regarde tout d'abord OU est gérée dans le code le hideempty qui est le nom du paramètre qui gère l'affichage -ou non - des modules vide... je vois donc que c'est le plugin d'advanced module manager qui gère le cas, et qui fait un return true à la place d'afficher le module si la valeur du module est vide et que l'option hideempty est cochée...

SAUF QUE dans notre cas, c'est que le widget du yootheme prends le dessus... quel que soit le paramètre qu'on met, le fameux widget.php prends le dessus et gère l'affichage du module... il suffit donc de modifier le fichier widget.php (toujours le même, on n'en sort pas ^^ ) au moment ou il s'occupe du rendu des modules ( tout à la fin du fichier, donc, comme ça on est sur en plus de ne rien casser )

il suffit donc de remplacer 

echo '
'.$badge.$title.$content.'
'; 

par ceci :

if($widget->advancedparams->hideempty==1 && $widget->content=='')
    echo '';
else 
    echo '
'.$badge.$title.$content.'
';
 

 

C'est rudimentaire, mais ça marche :D

N'hésitez pas à réagir en commentant l'article ou sur les réseaux sociaux - je vous donne même mon compte google +

https://plus.google.com/u/0/111173509958661808617

 

Mercii