web-dev-qa-db-fra.com

La structure de module par défaut n'est pas respectée dans l'administrateur (lors de l'ajout d'un module)

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?

5
jackJoe

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. :)

3
David Fritsch