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
AbstractModuleDispatcherpara 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
DatabaseAwareTraitpara 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.