Para criar um módulo para o Joomla, siga os seguintes passos:

  1. 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".
  2. 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>
  3. 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'));
  4. Crie uma pasta chamada "tmpl" dentro da pasta do seu módulo. Essa pasta conterá os arquivos de layout do seu módulo.

  5. 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>
  6. Compacte a pasta do seu módulo em um arquivo ZIP.
  7. No painel de administração do Joomla, vá até "Extensões" > "Módulos" e clique em "Novo".
  8. Selecione o seu módulo na lista de módulos disponíveis e clique em "Próximo".
  9. 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.
  10. Vá até o front-end do seu site e verifique se o seu módulo está sendo exibido corretamente.
  11. 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:

  1. Crie uma pasta chamada "language" dentro da pasta do seu módulo. Essa pasta conterá os arquivos de idioma do seu módulo.
  2. 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".
  3. 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"
  4. 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);
  5. 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:

  1. Crie um arquivo chamado "helper.php" na pasta do seu módulo.
  2. 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;
      }
    }
  3.  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'));
  4.  
    No arquivo de layout do seu módulo, use os dados obtidos pelo helper para exibir o conteúdo do módulo:
    <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.