O que é o fluxo de execução do Joomla, após uma solicitação chegar ao index.php até a saída final no navegador?

8

Com base nesta pergunta: Como os modelos funcionam e carregam arquivos css / js? Processo de criação de sites com o Purity III

Citação:
.... Tenho que apresentar meu site amanhã e talvez me perguntem "de onde vem o conteúdo?" e eu não posso responder porque eu não entendo.

O que acontece se eu ligar para o site? No arquivo index.php está o código php, mas não consigo encontrar o local em que o resto do site é "chamado" ou algo assim ....

e também sobre tipos de perguntas como esta: Onde os arquivos do Joomla estão localizados

Decidi criar este Q / A para funcionar como referência para todas as perguntas semelhantes. Qualquer pessoa que queira contribuir para tornar este post sólido na comunidade é bem-vinda.

FFrewin
fonte

Respostas:

13

ToC do respondente
1. Introdução aos iniciantes + link para recursos para iniciantes
2. Sobre a arquitetura do
Joomla 3. Fluxo de execução do Joomla - Como funciona o Joomla
4. Recursos adicionais

1. Introdução para iniciantes

Usar o Joomla para construção de sites é bastante simples, pois fornece uma área de administração amigável. Na maioria dos casos, isso é tudo o que é necessário saber para usuários finais e designers.

Muitos iniciantes com algum conhecimento em html e css estático clássico têm a mesma pergunta / expectativa comum: Como editar seus arquivos / conteúdo, como eles vêem sendo renderizados em seu navegador.

No entanto, a maneira como o Joomla trabalha nos bastidores é muito mais complicado do que editar um arquivo html e requer conhecimento e experiência avançados em programação para entendê-lo completamente.

Portanto, como resposta curta: não espere abrir o aplicativo gerenciador de FTP / Arquivo e encontrar um arquivo chamado:, myArticle.htmlou index.htmlque permita editá-lo diretamente ou alterar a aparência dos elementos html da sua página.

Para começar, sugiro aprender primeiro o básico do Joomla e como gerenciá-lo a partir do back-end. Lentamente, lentamente, será adquirido mais conhecimento e experiência.

Recursos para iniciantes

Um tópico com recursos e tutoriais úteis pode ser encontrado aqui:
Tutoriais para iniciantes no Joomla - Como começar com o Joomla?


2. Sobre a arquitetura Joomla

O Joomla é mais do que um CMS moderno construído em PHP. É um projeto web avançado que incorpora arquitetura de várias camadas, que inclui:

  • A estrutura do Joomla - incluindo bibliotecas de terceiros nas quais a estrutura se baseia e os plugins que estendem a estrutura.
  • Aplicativos Web separados, como o site do administrador, o site front-end, a instalação.
  • A camada de extensões (módulos, componentes, modelos) que estendem a estrutura do Joomla e os aplicativos.

Implementos Joomla vários conceitos avançados de programação, Programação Orientada a Objetos , MVC padrão de design e outros padrões comuns de design, um sistema de templates etc. Também não se esqueça de mencionar que Joomla faz uso de um banco de dados onde os dados são salvos e recuperados quando solicitado para ser exibido em tela.


3. Descrição Simples e Breve do Ciclo de Execução do Joomla - Como o Joomla Funciona

Quando você index.phpacessa o site Joomla (o aplicativo JSite de front-end), um novo ciclo de execução é iniciado, incluindo:

  • Importante inclui arquivos que definem os CONSTANTES do aplicativo que são amplamente utilizados no aplicativo e em suas extensões.
  • Carregando a estrutura do Joomla e todas as suas classes essenciais necessárias para que o aplicativo funcione no futuro, - a estrutura também verifica se existe um arquivo de configuração ou deve nos levar para a pasta de instalação para fazer uma nova instalação do Joomla .
  • O objeto Aplicativo é criado e inicializado e o estado da sessão é tratado (sessão nova ou existente).
  • O arquivo de configuração é carregado - que também dá acesso ao banco de dados.
  • O roteador é chamado. O roteador é responsável pela tradução de URLs para uma matriz associativa de comandos e vice-versa. Esses comandos serão usados ​​como parâmetros de URL e enviados ao SuperGlobal do PHP$_GET para compor um URL completo. O optionelemento dessa matriz é o que define o componente que deve ser executado.
  • Com a execução do componente, o Objeto do Documento é criado. O documento é armazenado na memória e contém dados que serão retornados posteriormente no navegador. O fato de ser armazenado como buffer na memória permite colocar e manipular conteúdo nele em nenhuma ordem específica e em qualquer local. O modelo selecionado foi armazenado na configuração. Além disso, vale ressaltar que a única coisa que o Joomla está fazendo é executar o componente. O que mais deve acontecer durante esta etapa é o trabalho do componente.
  • A seguir, vem a renderização da página , onde, juntamente com os dados do componente da etapa anterior, os módulos e as mensagens de notificação também são renderizados e colocados em suas posições de modelo.
  • A etapa final é enviar a página para o navegador .
  • É importante observar que, durante os vários estágios do ciclo de execução acima, são chamados pontos de Eventos de Plugin , que permitem que os vários eventos interfiram e estendam a funcionalidade do Joomla.

Uma lista de fluxo de execução mais detalhada, com os eventos do plug-in, está documentada aqui: Fluxo de Execução do Aplicativo Joomla


4. Recursos Suplementares:

FFrewin
fonte
1

Pequena contribuição, a lista completa de Joomla! Eventos de plug-in .

Gruber
fonte
pequeno, mas útil
FFrewin
talvez você possa escrever as partes mais essenciais dessa página aqui
FFrewin
@FFrewin eu gostaria, mas basicamente é uma longa lista de links de cada evento do Plugin! Estou tentando encontrar uma espécie de "linha do tempo" de todos os eventos nesta lista, mas não consigo encontrar muito sobre isso, encontrei sua resposta aqui depois de muito pesquisar e o fluxo de execução de aplicativos do Joomla menciona alguns dos eventos do grupo Sistema, mas não muito sobre todos os outros.
Gruber
O @FFrewin também seria útil como uma descrição geral de todos os diferentes grupos de eventos de plugins, mas não encontrei muita coisa nos documentos do Joomla (embora reconheça que meu GoogleFu esteja um pouco ausente hoje em dia, não sei por que, talvez seja o calor: P)
Gruber