J'ai remarqué qu'avec Joomla 3, tout module ayant plus d'une mise en page (dans le dossier tmpl
) et dans la .xml a une mise en page par défaut choisie
exemple:
<field name="layout" type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"
default="mylayout" />
Lors de l'ajout du module dans l'administration, si je vais dans l'onglet Avancé pour vérifier/sélectionner la "Mise en page alternative", elle affiche la première en ordre alphabétique et non la valeur par défaut spécifiée dans le xml!
Est-ce dû à un changement dans la façon dont je devrais définir la valeur par défaut?
Ou est-ce lié à un bug?
En regardant le code du fichier modulelayout.php
, Il vous semblera peut-être nécessaire de préfacer le nom de la mise en page avec _:
. Donc, votre champ xml ressemblerait à ceci:
<field name="layout" type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"
default="_:mylayout" />
Je vois dans le fichier qu'il définit une option de sélection en tant que telle:
$groups['_']['items'][] = JHtml::_('select.option', '_:' . $value, $text);
C'est, je suppose, utilisé pour le distinguer des fichiers portant exactement le même nom que ceux du modèle (en tant que substitutions). Ceux-ci seraient préfacés par le nom du modèle, basé sur ce code:
$groups[$template->element]['items'][] = JHtml::_('select.option', $template->element . ':' . $value, $text);
Je ne sais pas si cela est réellement documenté ailleurs. Mais pour plus de plaisir, essayez de lire le code à libraries/legacy/form/field/modulelayout.php
. Ce n'est pas trop fou. :)