Informática Numaboa - Tutoriais e Programação
Entenda o Framework do Joomla 1.5
Sab 12 Jan 2008 20:53 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:34
- Autor: vovó Vicki
- Acessos: 20900
O Joomla 1.5 é o aperfeiçoamento do Joomla versões 1.0.x. Totalmente redesenhado, oferece muito mais segurança e maior flexibilidade. Acontece que, para passar de uma versão 1.0.x para a versão 1.5 não é tão simples assim: módulos, componentes e mambots (agora chamados de plugins) precisam ser reescritos, a base de dados precisa ser reestruturada e os templates precisam ser remodelados. Para quem possui um site movido a Joomla 1.0.x, a transição pode parecer quase impossível.
Este tutorial mostra o que mudou e dá uma panorâmica das novas capacidades do Joomla - assuntos mais específicos são tratados em tutoriais próprios. Tudo para facilitar o trabalho dos primeiros curiosos que, assim como eu, não resistem à tentação de embarcar na nova versão e encarar os desafios desta fase de transição.
As camadas do Joomla 1.5
A camada framework
O "motor" do Joomla 1.5 é o chamado Framework. Tudo no Joomla é construído sobre esta base constituída por classes de objetos que controlam, geram informações e coordenam as ações do Joomla. Possui vários pacotes:
- o pacote aplicativo, que alimenta a camada aplicativo e contém a classe JApplication
- o pacote com as bibliotecas de cache
- o pacote chamado de comum e que contém as classes básicas e as bibliotecas de compatibilidade com versões anteriores
- o pacote conector com bibliotecas para clientes como FTP e LDAP
- o pacote para a base de dados que contém a classe JDatabase e as bibliotecas necessárias
- o pacote documento com as bibliotecas necessárias para criar e apresentar páginas
- o pacote do sistema de arquivos com bibliotecas para interagir com o filesystem
- o pacote i18n com bibliotecas de internacionalização (idiomas)
- o pacote de instalação com bibliotecas para poder instalar extensões (componentes, módulos, plugins, templates, etc)
- o pacote de e-mail com bibliotecas
- o pacote modelo com bibliotecas o objeto de acesso de dados
- o pacote de parâmetros com bibliotecas para a manipulação de parâmetros
- o pacote de registro (registry) com bibliotecas de armazenamento de configurações
- o pacote de modelos com bibliotecas de templates
- o pacote de utilidades com diversas bibliotecas de uso geral
- a classe JFactory que permite instanciar os objetos do framework
- a classe JVersion que permite obter a versão do Joomla
O framework não pode ser acessado diretamente, mas o Joomla oferece uma ponte para criar seus vários objetos através do JFactory.
Os plugins, antigos mambots, são extensões que trabalham par e passo com o framework ampliando suas funcionalidades. Por exemplo, podemos ter um plugin que analisa o texto de uma página antes que seja apresentado e mude algumas das suas características substituindo partes do texto ou trocando alguns marcadores por imagens.
Além do JFactory e dos plugins, não tem como alterar o comportamento do framework do Joomla, a não ser alterando seu código fonte!
A camada aplicativo
A camada aplicativo é formada por todos os objetos necessários para que o sistema funcione de forma integrada e coordenada. Esta camada também é a interface para as extensões.
A camada das extensões
Esta camada é constituída por componentes, módulos e templates. Os componentes são aplicativos escritos para o Joomla que ampliam a funcionalidade do sistema. Por exemplo, um sistema de gerenciamento de weblinks ou de downloads. Os componentes são elementos incluídos no corpo da página.
Os módulos também são pequenos aplicativos que podem ser incluídos em todas as páginas (ou apenas nas da sua escolha) no topo, nas laterais ou no rodapé. Exemplos são o módulo de login e o módulo de estatística do site.
Templates são modelos de apresentação das páginas. Controlam a disposição dos módulos e fornecem informações sobre a aparência e disposição do texto.
Entendendo o mecanismo
Para produzir extensões para o Joomla é muito importante entender o mecanismo do sistema. Conhecendo o funcionamento do sistema fica mais fácil criar extensões que se integrem de forma harmônica e que incorporem a segurança e a coordenação oferecida pelo sistema.
Simplicando as coisas ao máximo, o mecanismo é o seguinte: um script "acorda" o framework para que ele forneça os modelos (classes) necessários para produzir todos os objetos que vão compor o sistema. Usando o JFactory como ferramenta, o script vai criando todos os objetos necessários para o funcionamento do mesmo, ou seja, vai compondo a camada aplicativo povoando-a com objetos e com referências a bibliotecas. Quando esta camada estiver pronta e ativa, os componentes, módulos e templates são incorporados e os plugins são "ativados".
Para poder entrar neste universo de objetos interligados precisamos conhecer as características de cada um deles, ou seja, saber quais métodos (funcionalidades) oferecem e quais as variáveis que usam. Como este assunto é muito extenso, não será possível colocar tudo isto num só tutorial - os principais objetos ganharam um tutorial próprio. Neste aqui vamos ficar na camada framework e descrever apenas o JFactory.
Para localizar o código fonte de todo o framework procure no diretório (pasta) /libraries/joomla/ e seus subdiretórios.
JFactory
O codigo fonte está em /libraries/joomla/factory.php
Possui os seguintes métodos:
getACL Obter um objeto de autorização Retorna uma referência para o objeto global JAuthorization, criando-o se ainda não existir Referência: function &getACL( ) Exemplo de uso: $autoriza =& JFactory::getACL();
getApplication Obter um objeto aplicativo Retorna uma referência para o objeto global JApplication, criando-o se ainda não existir Referência: function &getApplication([mixed $id = null], [array $config = array()], [$prefix = 'J']) $id - (opcional) um identificador ou nome do cliente $config - (opcional) um array associativo da configuração Exemplo de uso: $aplicativo =& JFactory::getApplication();
getCache Obter um objeto cache Retorna uma referência para o objeto global JCache Referência: function &getCache([string $group = ''], [string $handler = 'callback'], [string $storage = null]) $group - (opcional) o nome do grupo cache $handler - (opcional) o manipulador a ser usado $storage - (opcional) o método de armazenamento Exemplo de uso: $cache =& JFactory::getCache();
getConfig Obter um objeto configuração Retorna uma referência para o objeto global JRegistry, criando-o se ainda não existir Referência: function &getConfig([string $file = null], [string $type = 'PHP']) $file - (opcional) o caminho (path) para o arquivo de configuração $type - (opcional) o tipo de arquivo Exemplo de uso: $config =& JFactory::getConfig();
getDBO Obter um objeto banco de dados Retorna uma referência para o objeto global JDatabase, criando-o se ainda não existir Referência: function &getDBO( ) Exemplo de uso: $db =& JFactory::getDBO();
getDocument Obter um objeto documento Retorna uma referência para o objeto global JDocument, criando-o se ainda não existir Referência: function &getDocument( ) Exemplo de uso: $documento =& JFactory::getDocument();
getEditor Obter um objeto editor Retorna uma referência para o objeto global JEditor Referência: function &getEditor([string $editor = null]) $editor - (opcional) o editor que deve ser carregado, depende dos plugins instalados Exemplo de uso: $editor =& JFactory::getEditor();
getLanguage Obter um objeto idioma Retorna uma referência para o objeto global JLanguage, criando-o se ainda não existir Referência: function &getLanguage( ) Exemplo de uso: $idioma =& JFactory::getLanguage();
getMailer Obter um objeto mailer Retorna uma referência para o objeto global JMail, criando-o se ainda não existir Referência: function &getMailer( ) Exemplo de uso: $mail =& JFactory::getMailer();
getSession Obter um objeto sessão Retorna uma referência para o objeto global JSession, criando-o se ainda não existir Referência: function &getSession([array $options = array()]) $options - (opcional) uma array contendo as opções da sessão Exemplo de uso: $sessao =& JFactory::getSession();
getTemplate Obter um objeto template Retorna uma referência para o objeto global JTemplate, criando-o se ainda não existir Referência: function &getTemplate( ) Exemplo de uso: $template =& JFactory::getTemplate();
getURI Obter um objeto URI Retorna uma referência para o objeto global JURI Referência: function &getURI([ $uri = 'SERVER']) Exemplo de uso: $uri =& JFactory::getURI();
getUser Obter um objeto usuário Retorna uma referência para o objeto global JUser, criando-o se ainda não existir Referência: function &getURI([ $id = NULL]) $id - (opcional) o usuário que deve ser carregado. Pode ser um inteiro ou string (a string é automaticamente transformada em ID) Exemplo de uso: $usuario =& JFactory::getUser('admin');
getXMLParser Obter um documento XML Retorna uma referência para o objeto documento XML Referência: function &getXMLParser([string $type = 'DOM'], [array: $options = array()]) $type - (opcional) o tipo de analisador de XML necessário: 'DOM', 'RSS' ou 'Simple' $options - (opcional) Usando 'DOM': Se ['lite'] for true ou não for definido, então domit_lite é usado Usando 'RSS': ['rssUrl'] a url rss a ser analisada Usando 'RSS': ['cache_time'] é o tempo de cache do feed. Se não definido, o default é 3600 seg Exemplo de uso: $parser =& JFactory::getXMLParser();
Observações
Ainda existem três classes neste nível do framework. São JVersion, JLoader e JRoute. Como dificilmente são usadas pelos programadores, não fiz a "autópsia" das ditas cujas. Vocês podem achar maiores detalhes nos links de referência ou darem uma olhada em JVersion no diretório /libraries/joomla/version.php, em JLoader no diretório /libraries/loader.php e no JRoute no diretório /libraries/joomla/methods.php.