Neste guia, vamos explorar a criação de um módulo personalizado para Joomla 5. Usaremos o exemplo do módulo mod_hello
, que mostra uma lista dinâmica de itens e utiliza recursos modernos do framework, como namespaces, traits e containers de dependências.
Com este guia, você pode criar seu próprio módulo personalizado, aproveitando o poder das ferramentas modernas do Joomla 5. Organize seu projeto, utilize helpers e traits para funcionalidades reutilizáveis, e implemente layouts dinâmicos para exibir os dados de forma eficiente.
Estrutura do Projeto
Aqui está a estrutura padrão de um módulo no Joomla:
mod_hello/ | ├── language/ # Arquivos de linguagem │ └── en-GB/ # Diretório com traduções │ ├── mod_hello.ini # Texto exibido pelo módulo │ └── mod_hello.sys.ini # Metadados (nome e descrição) | ├── media/ # Recursos estáticos │ ├── css/ # Estilos CSS do módulo │ ├── images/ # Imagens usadas pelo módulo │ └── js/ # Scripts JavaScript │ ├── services/ # Serviços para injeção de dependências │ └── provider.php # Configuração de serviços │ ├── src/ # Arquivos principais de lógica do módulo │ ├── Dispatcher/ │ │ └── Dispatcher.php # Controlador para tratar requisições │ └── Helper/ │ └── HelloHelper.php # Funções auxiliares do módulo │ ├── tmpl/ # Layouts e templates │ └── default.php # Arquivo de exibição padrão │ ├── mod_hello.xml # Manifesto do módulo (configuração e estrutura)
Componentes Principais
Dispatcher.php (src/Dispatcher)
Responsável por processar as requisições do módulo e preparar os dados a serem exibidos.
- Namespace:
Joomla\Module\Hello\Site\Dispatcher
- Classe: Extende
AbstractModuleDispatcher
para reaproveitar funcionalidades. - Método getLayoutData:
$data['list'] = $this->getHelperFactory() ->getHelper('HelloHelper') ->getItems($data['params'], $this->getApplication());
Este método busca dados dinâmicos para exibição usando o helper HelloHelper
.
provider.php (services/)
Um provedor de serviços que registra dependências para o módulo.
- Implementação: Um arquivo PHP com uma classe anônima que implementa
ServiceProviderInterface
. - Serviços Registrados:
- ModuleDispatcherFactory
- HelperFactory
- O módulo propriamente dito.
HelloHelper.php (src/Helper)
Um helper que busca dados no banco de dados.
- Namespace:
Joomla\Module\Hello\Site\Helper
- Banco de Dados: Usa
DatabaseAwareTrait
para interações com o banco. - Método getItems:
$query->select('*') ->from('#__content') ->order('title ASC') ->setLimit((int) $params->get('count', 5));
Retorna artigos da tabela #__content
com base nos parâmetros.
default.php (tmpl/)
O layout padrão do módulo, responsável por exibir os dados.
Exemplo de saída HTML:
Manifesto XML (mod_hello.xml)
O manifesto do módulo descreve a estrutura e configurações do projeto.
Para baixar o gerador de módulos e o módulo de exemplo clique aqui.