it-swarm-es.tech

Joomla! Componente CMS con Joomla! ¿Marco de referencia?

Tengo curiosidad por construir componentes de CMS sobre Joomla! Marco principalmente porque me gustaría que mis componentes funcionen como aplicaciones independientes.

¿Es esto posible sin hacks? Si no, ¿hay una forma preferida de abordar esto?

7
Nestor Ledon

Esta pregunta es imposible de responder de manera concluyente, pero creo que vale la pena probar algunas de las piezas más comunes que podrían tropezar con el código de portabilidad (y habrá bastantes).

Antes de entrar en detalles, todo esto podría considerarse un truco, dependiendo de su punto de vista. El CMS y el Marco son muy diferentes desde el punto de vista de un componente. El CMS define la estructura exacta a utilizar. El Framework está diseñado para permitirle personalizar cómo se ejecuta e interactúa su aplicación. Definitivamente, el Framework puede diseñarse para ejecutar componentes desde el CMS, pero en cierto punto esto es solo cuando está recreando el CMS, lo que parece inútil.

Primero, la respuesta súper corta y simple: cada forma en que su componente interactúa con el CMS necesita ser rehecho, deberá agregar un enrutador y probablemente tendrá que agregar espacios de nombres o un nuevo cargador automático.

Comencemos con la segunda mitad de esto. Lo más probable es que estés usando composer con Joomla Framework, por lo que puedes confiar en que el autocargador del compositor carga las clases cuando las necesites. Esto está diseñado para ejecutarse dentro de espacios de nombres y cargar según eso, para que su componente no se cargue automáticamente. (Supongo que esto, así que si hay una mejor manera, alguien por favor comente). Esto significa que debe agregar su propio cargador automático para las clases MVC o reescribirlas en un espacio de nombres. .

En segundo lugar, deberá agregar su propio archivo de enrutador a la aplicación. Como ya no tiene el administrador de menús, deberá volver a crearlo con la clase Router. En realidad, esto es bastante sencillo para asignar direcciones URL a un controlador, pero debe asegurarse de que esté en la aplicación.

Finalmente, debe admitir cualquier característica de CMS que use en el componente. El más grande que viene a la mente es JFactory. Cualquier script que llame a esa clase para obtener la sesión, la base de datos o el documento no funcionará. (A menos que transfiera esa clase y redefina sus ganchos para adaptarse a su aplicación.

¿Llamas a JComponentHelper en alguna parte? Tendría que agregar soporte para eso. ¿Llamas a otro ayudante para una extensión principal como com_content o com_users? Eso tampoco funcionará más.

Podría obtener algunas extensiones simples ejecutándose en el marco fácilmente. Aquellos que se conectan al CMS de muchas maneras pueden requerir básicamente reconstruir el CMS para hacer todas las piezas. Esta parte realmente depende de la extensión.


Para finalizar, en esta etapa, lo más probable es que implique algún tipo de piratería o copia/pegado de código del CMS al marco que necesita.

Creo que el CMS estará más en línea con la estructura del marco (es decir, usa compositor, usa espacios de nombres, etc.) que facilitarán esto. En este momento, sin embargo, es una tarea bastante desalentadora.

5
David Fritsch