A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Entenda o Framework do Joomla 1.5

Sab

12

Jan

2008


20:53

(22 votos, média 4.68 de 5) 


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.

info 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

info 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.

Referências

Вадим Логофеткисти вобслобановский александр игоревич харьков мунтянмоноподотзывы nikasbroker mfx

Informações adicionais