Para criar um módulo para o Joomla, siga os seguintes passos:
- Crie uma nova pasta no diretório "modules" do seu site Joomla. O nome da pasta deve ser o nome do seu módulo, por exemplo "meumodulo".
- Crie um arquivo chamado "mod_meumodulo.xml" na pasta do seu módulo. Este arquivo é usado pelo Joomla para instalar e gerenciar o seu módulo. Adicione as seguintes informações ao arquivo:
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.9.0"> <name>Meu Módulo</name> <author>Seu Nome</author> <creationDate>hoje</creationDate> <copyright>Copyright (C) ano Seu Nome. Todos os direitos reservados.</copyright> <license>GNU General Public License versão 2 ou posterior</license> <authorEmail></authorEmail> <authorUrl>seu_site.com</authorUrl> <version>1.0.0</version> <description>Uma descrição do seu módulo</description> <files> <filename module="mod_meumodulo">mod_meumodulo.php</filename> <filename>index.html</filename> </files> <languages> <language tag="en-GB">en-GB.mod_meumodulo.ini</language> <language tag="en-GB">en-GB.mod_meumodulo.sys.ini</language> </languages> </extension>
- Crie um arquivo chamado "mod_meumodulo.php" na pasta do seu módulo. Este arquivo conterá o código PHP que irá gerar o conteúdo do seu módulo. Adicione o seguinte código ao arquivo:
<?php defined('_JEXEC') or die; // Carrega a classe do módulo jimport('joomla.application.module.helper'); // Recebe os parâmetros do módulo $params = new JRegistry; $params->loadString($module->params); // Obtém o conteúdo do módulo $module_content = 'Conteúdo do meu módulo'; // Carrega o arquivo de layout require JModuleHelper::getLayoutPath('mod_meumodulo', $params->get('layout', 'default'));
-
Crie uma pasta chamada "tmpl" dentro da pasta do seu módulo. Essa pasta conterá os arquivos de layout do seu módulo.
-
Crie um arquivo chamado "default.php" na pasta "tmpl" do seu módulo. Este arquivo conterá o HTML do seu módulo. Adicione o seguinte código ao arquivo:
<div class="mod_meumodulo">
<?php echo $module_content?>
</div> - Compacte a pasta do seu módulo em um arquivo ZIP.
- No painel de administração do Joomla, vá até "Extensões" > "Módulos" e clique em "Novo".
- Selecione o seu módulo na lista de módulos disponíveis e clique em "Próximo".
- Preencha as informações do seu módulo, incluindo o título, a posição e o status. Em "Opções Avançadas", você pode configurar os parâmetros do seu módulo, como o layout padrão. Clique em "Salvar" quando terminar.
- Vá até o front-end do seu site e verifique se o seu módulo está sendo exibido corretamente.
- Se precisar alterar o conteúdo ou o layout do seu módulo, basta editar os arquivos "mod_meumodulo.php" e "default.php" e re-instalar o módulo através do painel de administração do Joomla.
Para adicionar suporte a idiomas ao seu módulo, siga os seguintes passos:
- Crie uma pasta chamada "language" dentro da pasta do seu módulo. Essa pasta conterá os arquivos de idioma do seu módulo.
- Crie uma pasta para cada idioma que você deseja suportar, usando a tag de idioma padrão do Joomla. Por exemplo, para adicionar suporte ao idioma inglês (Reino Unido), crie a pasta "en-GB".
- Crie um arquivo chamado "mod_meumodulo.ini" na pasta do idioma desejado. Este arquivo conterá as strings de tradução do seu módulo. Adicione as seguintes linhas ao arquivo:
MOD_MEUMODULO_TITLE="Título do meu módulo" MOD_MEUMODULO_DESC="Descrição do meu módulo"
- No arquivo "mod_meumodulo.php", adicione o seguinte código no início do arquivo para carregar os arquivos de idioma do módulo:
$language = JFactory::getLanguage(); $language->load('mod_meumodulo', JPATH_SITE, 'en-GB', true); $language->load('mod_meumodulo', JPATH_SITE, null, true);
- No arquivo de layout do seu módulo, use as strings de tradução carregadas para exibir o título e a descrição do módulo:
<div class="mod_meumodulo">
<h3><?php echo JText::_('MOD_MEUMODULO_TITLE'); ?></h3> <p><?php echo JText::_('MOD_MEUMODULO_DESC'); ?></p> <?php echo $module_content; ?> </div>
Para incluir o arquivo "helper.php" no seu módulo, siga os seguintes passos:
- Crie um arquivo chamado "helper.php" na pasta do seu módulo.
- Adicione o seguinte código ao arquivo para incluir a classe de helper do módulo:
<?php defined('_JEXEC') or die; class ModMeuModuloHelper { public static function getData() { // Coloque aqui o código para obter os dados que deseja exibir no módulo $data = array(); return $data; } }
- No arquivo "mod_meumodulo.php", adicione o seguinte código para carregar o arquivo "helper.php" e obter os dados do helper:
<?php defined('_JEXEC') or die; // Carrega a classe do módulo jimport('joomla.application.module.helper'); // Carrega o helper do módulo require_once dirname(__FILE__) . '/helper.php'; // Recebe os parâmetros do módulo $params = new JRegistry; $params->loadString($module->params); // Obtém os dados do helper $data = ModMeuModuloHelper::getData(); // Carrega o arquivo de layout require JModuleHelper::getLayoutPath('mod_meumodulo', $params->get('layout', 'default'));
-
<div class="meumodulo">
<?php foreach ($data as $item) : ?> <h3><?php echo $item->title; ?></h3> <p><?php echo $item->description; ?></p> <?php endforeach; ?>
</div>
Forma correta de chamar as classes no Joomla 4 para o Módulo
- No Joomla 4, é recomendado usar a classe Joomla\CMS\Module\ModuleHelper para carregar o layout do módulo e obter o caminho do layout. Isso deve ser feito da seguinte forma:
// Carrega o arquivo de layout $layout = $params->get('layout', 'default'); require \Joomla\CMS\Module\ModuleHelper::getLayoutPath('mod_meumodulo', $layout);
- Além disso, é recomendado usar a classe Joomla\CMS\Factory para obter a instância do objeto de configuração do site e da aplicação, bem como para acessar os métodos JText para tradução de strings. Isso pode ser feito da seguinte forma:
// Obtém a instância do objeto de configuração do site $config = \Joomla\CMS\Factory::getConfig(); // Obtém a instância do objeto de configuração da aplicação $app = \Joomla\CMS\Factory::getApplication(); // Usa o método JText para traduzir uma string echo \Joomla\CMS\Language\Text::_('MOD_MEUMODULO_TITLE');
- Além da forma que eu mencionei acima, você também pode usar as classes do Joomla 4 no cabeçalho do seu módulo de forma mais explícita, da seguinte forma:
// Carrega a classe do módulo use Joomla\CMS\Module\ModuleHelper; // Carrega a classe de configuração e aplicação use Joomla\CMS\Factory; // Carrega a classe de tradução de strings use Joomla\CMS\Language\Text; // Carrega o arquivo de layout $layout = $params->get('layout', 'default'); require ModuleHelper::getLayoutPath('mod_meumodulo', $layout); // Obtém a instância do objeto de configuração do site $config = Factory::getConfig(); // Obtém a instância do objeto de configuração da aplicação $app = Factory::getApplication(); // Usa o método JText para traduzir uma string echo Text::_('MOD_MEUMODULO_TITLE');
- Essa forma é um pouco mais verbosa, mas pode ser mais legível e fácil de entender para desenvolvedores que estejam acostumados com outros frameworks PHP.
Espero que essas informações ajudem a esclarecer como usar as classes do Joomla 4 no cabeçalho do seu módulo.