ti-enxame.com

Layout do módulo padrão não respeitado no administrador (ao adicionar um módulo)

Percebi que, com o Joomla 3, qualquer módulo que tenha mais de um layout (na pasta tmpl) e no .xml tenha um layout padrão escolhido

exemplo:

<field name="layout" type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"
default="mylayout" />

Ao adicionar o módulo na administração, se eu for para a guia Avançado para verificar/selecionar o "Layout alternativo", ele mostra o primeiro em ordem alfabética e não o padrão especificado no xml!

Isso se deve a alguma alteração na maneira como devo definir o padrão?

Ou está relacionado a um bug?

5
jackJoe

Com base na análise do código do modulelayout.php, parece que você deve preceder o nome do layout com _:. Portanto, seu campo xml ficaria assim:

<field name="layout" type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"
default="_:mylayout" />

Estou vendo no arquivo que ele define uma opção de seleção como tal:

$groups['_']['items'][] = JHtml::_('select.option', '_:' . $value, $text);

Acho que é usado para diferenciá-lo dos arquivos com o mesmo nome exato que estão no modelo (como substituições). Esses seriam precedidos pelo nome do modelo, com base neste código:

$groups[$template->element]['items'][] = JHtml::_('select.option', $template->element . ':' . $value, $text);

Não tenho idéia se isso está realmente documentado em outro lugar. Mas para mais diversão, tente ler o código em libraries/legacy/form/field/modulelayout.php. Não é muito louco. :)

3
David Fritsch