Informática Numaboa - Tutoriais e Programação
Componente Joomla 1.5 - O básico
Seg 30 Jul 2007 17:09 |
- Detalhes
- Categoria: Joomla
- Atualização: Terça, 21 Abril 2009 20:24
- Autor: vovó Vicki
- Acessos: 32821
O sistema de gerenciamento de conteúdo Joomla! aceita os mais diversos tipos de extensão. Um deles, os assim chamados componentes, funcionam como aplicativos que podem ser rodados dentro do frame do Joomla!. Este tutorial é o básico do básico para se criar um componente Joomla! 1.5
Pre-requisitos
O Joomla! está todo escrito em PHP, HTML, CSS e SQL. Para criar um componente é preciso ter algum conhecimento destas linguagens, se bem que, neste tutorial, utilizaremos apenas as duas primeiras.
Além disto, é muito importante saber que o framework do Joomla! oferece um caminhão de classes e funções prontinhas para serem usadas, ou seja, podemos economizar um monte de código se soubermos utilizar o que já está pronto. Mas a utilização de funções existentes não é só para economizar linhas de código, é também para garantir a segurança de todo o sistema - um componente com brechas de segurança é um convite para os hackers!
O projeto Olá
Este projeto é para um componente de frontend (interface com o usuário). Aqui você verá alguns dos padrões de codificação que foram estabelecidos para o Joomla! e um bom começo se você pretende criar seus próprios componentes.
A estrutura de arquivos
Um componente consiste de pelo menos um arquivo, no nosso caso o ola.php. Este arquivo precisa ficar no diretório /components/com_ola. Quando um componente é chamado, o Joomla! procura por um diretório com o nome do componente, retira o 'com_' e tenta encontrar um arquivo PHP com o mesmo nome. Por exemplo, se você chamar seu componente de 'Conteúdo', seu diretório precisa ser 'com_conteudo' e o arquivo que o Joomla! vai chamar será 'conteudo.php'.
A partir deste arquivo é possível linkar outros arquivos. O Joomla! possui um método especial de fazer isto (maiores detalhes mais adiante).
Um pouquinho de código
Se quisermos mostrar apenas 'OLÁ' na área de conteúdo do sistema, o código PHP é muito simples:
Acontece que, se ficar assim, qualquer um poderá executar este arquivo se souber o seu nome e a sua localização. Enquanto for uma coisinha simples como esta, tudo bem... mas a coisa pode ficar complicada se o componente for mais complexo, principalmente se acessar o banco de dados - qualquer erro poderá dar informações sobre o sistema que podem servir de munição para hackers. Para evitar este tipo de perigo, é bom adicionar a seguinte linha:
Quando o Joomla! é iniciado, a constante '_JEXEC' é inicializada. Como nosso script deve rodar apenas depois que o Joomla! estiver no ar, basta checar se o framework do sistema foi carregado antes do nosso arquivo ser chamado (defined( '_JEXEC' )). Se esta constante não estiver disponível é sinal de que alguém está querendo furar o cerco. Neste caso, vamos "matar" (die) a tentativa e parar a execução enviando a mensagem 'Área de acesso restrito'.
Nas versões anteriores do Joomla a constante é '_VALID_MOS'.
Trabalhando com eventos
Os eventos foram feitos sob medida para colocar um pouco de interatividade no nosso código:
JRequest::getVar() é o seguinte: JRequest (Joomla Request = Solicitação ao Joomla) é uma classe definida no framework que, entre outras funções, possui a função getVar(). Para tornar o Joomla mais seguro, todas as variáveis globais devem ser obtidas através desta função porque ela impede que código ou SQL seja injetado. Também é possível definir um valor default (indicado por default: dentro do switch).
No Joomla! a variável 'task' (tarefa) é normalmente usada para comparar tarefas dentro de um switch. Além desta, existe a variável 'option', cujo valor é usado para determinar qual componente deve ser carregado. Como estas variáveis fazem parte do sistema, lembre-se:
Nunca use estas variáveis para qualquer outra coisa, a não ser que você queira ser surpreendido por uns erros muito estranhos
Separando a lógica e a saída
Com certeza você já teve a oportunidade de ler vários scripts PHP. Frequentemente estes scripts são horríveis, uma mistureba de PHP, HTML e PHP gerando HTML (eu mesma já escrevi scripts deste tipo :blush: ). Para tornar os scripts mais enxutos, o Joomla! separa a parte lógica da parte responsável pela saída na tela. Usam-se dois arquivos diferentes para obter esta forma mais elegante de programação:
Com a função JApplicationHelper::getPath() determinamos o caminho para o arquivo que gera a saída HTML. No switch, ao invés de gerar uma saída com echo, há uma chamada para a função 'mostrar' definida na classe 'ola_HTML' do arquivo ola.html.php. Este arquivo gera apenas as saídas que vão para a área de conteúdo do sistema enquanto que a lógica do componente fica toda no arquivo ola.php - cada coisa no seu lugar
Esta técnica, além de deixar o código bem mais arrumado, permite atualizar o componente com mais facilidade. Se houver alteração (ou correção) na lógica, substitui-se apenas o arquivo ola.php; se houver alteração no conteúdo a ser gerado, substitui-se apenas o arquivo ola.html.php - mais prático, mais rápido e mais confortável.
Considerações finais
Como disse no início, este é o básico do básico para se criar um componente Joomla 1.5, mas, por incrível que pareça, não é preciso muito mais do que isto - este tutorial cobriu cerca de 80% do assunto!
Para testar este componente é preciso criar um pacote de instalação, só que este tema será tratado em outros tutoriais mais completos. Este é só para mostrar por onde começar e para tomar gosto pela coisa.
Referência
- Hello World, exemplo dado no Wiki de Documentação do Developer Net.