it-swarm.dev

Joomla! Componente CMS con Joomla! Struttura?

Sono curioso di costruire componenti CMS su Joomla! Framework principalmente perché vorrei che i miei componenti funzionassero come applicazioni autonome.

È possibile senza hack? In caso contrario, c'è un modo preferito per affrontare questo?

7
Nestor Ledon

A questa domanda è impossibile rispondere in modo conclusivo, ma penso che valga la pena dare una pugnalata ad alcuni dei pezzi più comuni che potrebbero farti inciampare nel porting del codice (e ce ne saranno parecchi).

Prima di entrare nei dettagli, tutto questo potrebbe essere considerato un hack, a seconda del tuo punto di vista. CMS e Framework sono molto diversi dal punto di vista di un componente. Il CMS definisce la struttura esatta da utilizzare. Framework è progettato per consentire di personalizzare il modo in cui l'applicazione viene eseguita e interagisce. Il Framework può sicuramente essere progettato per eseguire componenti dal CMS, ma a un certo punto questo è solo la tua ricostruzione del CMS, che sembra inutile.

Innanzitutto, la risposta super breve e semplice: ogni modo in cui il tuo componente interagisce con il CMS deve essere rifatto, dovrai aggiungere un router e probabilmente dovrai aggiungere spazi dei nomi o un nuovo caricatore automatico.

Cominciamo con la seconda metà di questo. Le probabilità sono che stai usando composer con Joomla Framework, quindi puoi fare affidamento sul caricatore automatico del compositore caricando le classi quando ne hai bisogno. È progettato per funzionare all'interno di spazi dei nomi e caricare in base a quello, quindi il tuo componente non si caricherà automaticamente. (Sto indovinando questo, quindi se c'è un modo migliore, qualcuno per favore commenta.) Ciò significa che devi aggiungere il tuo caricatore automatico per le classi MVC o riscriverlo in uno spazio dei nomi .

In secondo luogo, dovrai aggiungere il tuo file router all'applicazione. Poiché non hai più il gestore di menu, dovrai ricrearlo utilizzando la classe Router. Questo è in realtà abbastanza semplice per mappare gli URL a un controller, ma devi assicurarti che sia nell'applicazione.

Infine, devi supportare qualsiasi funzione CMS che usi nel componente. Il più grande che mi viene in mente è JFactory. Qualsiasi script che chiama quella classe per ottenere la sessione, il database o il documento non funzionerà. (A meno che non porti su quella classe e ridefinisca i suoi hook per adattarli alla tua applicazione.

Chiami JComponentHelper da qualche parte? Dovresti aggiungere supporto per quello. Chiamate un altro aiutante per un'estensione core come com_content o com_users? Neanche questo funzionerà più.

È possibile ottenere facilmente alcune semplici estensioni sul framework. Quelli che si agganciano al CMS in molti modi possono richiedere fondamentalmente la ricostruzione del CMS per fare tutti i pezzi. Questa parte dipende davvero dall'estensione.


In conclusione, in questa fase, molto probabilmente comporterà un qualche tipo di hacking o copia/incolla del codice dal CMS al framework di cui hai bisogno.

Credo che il CMS diventerà più in linea con la struttura del framework (ovvero usa il compositore, usa gli spazi dei nomi, ecc.) Che renderà tutto più semplice. In questo momento, tuttavia, è un compito piuttosto scoraggiante.

5
David Fritsch