ti-enxame.com

Joomla! Componente CMS com Joomla! Estrutura?

Estou curioso para criar componentes do CMS em cima do Joomla! Framework principalmente porque gostaria que meus componentes funcionassem como aplicativos autônomos.

Isso é possível sem hacks? Caso contrário, existe uma maneira preferida de abordar isso?

7
Nestor Ledon

É impossível responder a essa pergunta de maneira conclusiva, mas acho que vale a pena tentar algumas das peças mais comuns que podem fazer com que você troque código (e haverá algumas).

Antes de entrar em detalhes, tudo isso pode ser considerado um hack, dependendo do seu ponto de vista. O CMS e o Framework são muito diferentes do ponto de vista de um componente. O CMS define a estrutura exata a ser usada. O Framework foi projetado para permitir que você personalize como o aplicativo é executado e interage. Definitivamente, o Framework pode ser projetado para executar componentes do CMS, mas em um determinado momento, é apenas você que recria o CMS, o que parece inútil.

Primeiro, a resposta super curta e simples: todas as maneiras que seu componente interage com o CMS precisam ser refeitas, você precisará adicionar um roteador e provavelmente precisará adicionar espaços para nome ou um novo carregador automático.

Vamos começar com a segunda metade disso. As probabilidades são de que você está usando composer com o Joomla Framework, para que você possa usar o carregador automático do compositor carregando as classes conforme necessário. para que seu componente não seja carregado automaticamente. (Suponho que, se houver uma maneira melhor, alguém comente.) Isso significa que você precisa adicionar seu próprio carregador automático para as classes MVC ou reescrevê-los em um espaço para nome .

Segundo, você precisará adicionar seu próprio arquivo de roteador ao aplicativo. Como você não tem mais o gerenciador de menus, será necessário recriá-lo usando a classe Router. Na verdade, é bastante simples mapear URLs para um controlador, mas você precisa garantir que isso esteja no aplicativo.

Por fim, você precisa oferecer suporte a qualquer recurso do CMS usado no componente. O maior que vem à mente é JFactory. Qualquer script que chame essa classe para obter a sessão, banco de dados ou documento não funcionará. (A menos que você transforme essa classe e redefina seus ganchos para se adequar ao seu aplicativo.

Você chama JComponentHelper em algum lugar? Você teria que adicionar suporte para isso. Você chama outro ajudante para obter uma extensão principal como com_content ou com_users? Isso também não vai funcionar.

Você pode obter algumas extensões simples rodando na estrutura facilmente. Aqueles que se conectam ao CMS de várias maneiras podem exigir basicamente a reconstrução do CMS para executar todas as tarefas. Esta parte realmente depende da extensão.


Para finalizar, nesse estágio, provavelmente envolverá algum tipo de invasão ou cópia/colagem de código do CMS na estrutura necessária.

Acredito que o CMS se tornará mais alinhado com a estrutura do framework (ou seja, usa compositor, usa namespaces etc.) que facilitará isso. No momento, é uma tarefa bastante assustadora.

5
David Fritsch