sábado, 8 de agosto de 2009

Personalizando um módulo Joomla!

Olá, WEBloucos.

Para personalizar um Módulo em seu template precisará criar um arquivo nomeado como "modules.php", no diretório "html" do seu template.
.:: Localização:
"pasta-onde-está-seu-joomla/templates/nome-do-seu-template/html/modules.php

Nesta página você deve definir uma funçao chamada "modChrome_STYLE", onde STYLE é o nome do seu módulo. Alguns exemplos:

modChrome_WEBLOUCOS, modChrome_MARIACEBOLA, modChrome_JOAOGRANDAO, modChrome_OQUEVOCEQUISER.

- Simples assim?
- Você não sabe o que te espera mais adiante. Vamos continuar. :)

Esta função deve ter três argumentos:

$module
&$params
&$attribs


Ficará assim:
<?php
function modChrome_STYLE( $module, &$params, &$attribs )
{
/* módulo vem aqui */
}
?>


Dentro desta função você pode fazer uso de qualquer propriedade disponível para os módulos (Module properties) em cada módulo que criar. Não deixe de utilizar essas propriedades:

$module->content
$module->showtitle
$module->title

$module->showtitle
É uma variável Booleana. Só poderá usar os valores "true" ou "false". Use "true" para mostrar e "false" para não mostrar.

$module->content e $module->title
Irão retornar o Módulo Conteúdo e o Módulo Título, respectivamente.

A função é uma função normal PHP e, por isso, pode utilizar qualquer código regular PHP. Um exemplo comum é usar uma declaração if para verificar o valor de $module-> showtitle e, em seguida, incluir o título ou não em conformidade:

<?php
if ($module->showtitle)
{
echo '<h2>' .$module->title .'</h2>';
}
?>



Os parâmetros do Módulo são acessados usando "$params". Por exemplo, é possível atribuir um "Module class suffix" ao módulo de administração de seu site em Joomla!

Os parâmetros para o módulo são armazenados como "moduleclass_sfx". Para criar uma <div> com "class" (<div class="nome-da-class">) determinada para o Módulo, você deve usar:
<div class="<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<!-- conteúdo da div -->
</div>


Atributos personalizados

Também é possível colocar mais atributos dentro da função do módulo, usando <jdoc: include /> com uma declaração que defina o módulo. Este atributo adicional pode ser qualquer coisa, e será armazenado na array "$attribs".

Exemplo:

<?php
function modChrome_custom( $module, &$params, &$attribs ) {
if (isset( $attribs['headerLevel'] ))
{
$headerLevel = $attribs['headerLevel'];
} else {
$headerLevel = 3;
}
if (isset( $attribs['background'] ))
{
$background = $attribs['background'];
} else {
$background = 'blue';
}

echo '<div class="' .$params->get( 'moduleclass_sfx' ) .'" >';
if ($module->showtitle)
{

echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
}

echo '<div class="' .$background .'">';
echo $module->content;
echo '</div>';
echo '</div>';
}
?>



No exemplo acima foram definidos parâmetros para "background" e "headerLevel" dentro do <jdoc: include />. Não havendo valores configurados serão apresentados como "azul" e "3" respectivamente, conforme especificado no padrão ("$headerLevel = 3;" / "$background = 'blue';")

Passando atributos do módulo através do <jdoc: include />
(esta tabela tem na página http://docs.joomla.org/Applying_custom_module_chrome)



WEBbeijos

Nenhum comentário: