Skip to main content

Insieme coltiviamo Joomla: Come scrivere un blog su Joomla

20 Gennaio 2026
Insieme coltiviamo Joomla: Come scrivere un blog su Joomla

In questo episodio vedremo Generatore di estensione come strumento per costruire un componente.

Il nostro viaggio fino ad ora

In questa serie vogliamo mostrare alcuni strumenti che possono aiutare a costruire componenti per Joomla.

Nell'episodio uno e due Abbiamo introdotto il nostro esempio, un programma di eventi, e lo abbiamo implementato senza costruire un componente. L'abbiamo implementato con il core Joomla, con Seblod e Fabrik.

Nell'episodio tre e quattro Abbiamo costruito un componente, senza usare molti strumenti. Abbiamo esplorato il modo in cui le relazioni tra le entità sono implementate in Joomla stesso e abbiamo elencato funzionalità aggiuntive, integrate in Joomla.

Nell'episodio cinque e sei Abbiamo usato Component Creator e Component Generator per costruire il nostro componente di pianificazione degli eventi di esempio.

Nell'episodio sette Abbiamo creato il nostro programma di eventi di esempio con Joomla Component Builder. Al momento questo è di gran lunga lo strumento più potente e versatile per produrre un componente.

Generatore di estensione

Extension Generator è un work in progress da parte mia. Ha lo scopo di dare ulteriori possibilità, oltre a Joomla Component Builder. Purtroppo non è ancora pronto per la produzione. In questo articolo introdurrò questo Generatore di estensioni, ma devierò dallo schema delle edizioni precedenti non implementando il nostro esempio ricorrente di un programma di eventi con questo strumento. Mostrerò invece alcuni dei diversi principi alla base, in particolare sul metalivello.

Guidato dal modello

Extension Generator è un componente di Joomla che si basa su lavori precedenti in Model Driven Development come JooMDD 1. Il nucleo di Sviluppo basato sul modello (MDD) significa che non si codifica direttamente un'applicazione, ma prima modello ed avere il vostro software generato da questo modello. Il termine Ingegneria basata sul modello (MDE) è anche ampiamente utilizzato, il che significa lo stesso, ma sottolineando che la generazione di software è automatizzata.

Il “modello” qui non è esattamente lo stesso concetto della classe Model di Joomla che fa parte della struttura Model-View-Controller di un componente. Un modello in MDE è un modello per un componente, che definisce tutte le cose che si desidera avere in quel componente. Come un disegno di costruzione è un modello di un edificio. È un'astrazione, tralasciando dettagli irrilevanti.

Ad esempio, con l'esempio di pianificazione degli eventi che abbiamo utilizzato nelle nostre edizioni precedenti, il nostro modello definirebbe le entità utilizzate per costruire il programma degli eventi: eventi, attori, tipi di eventi, contenitori e sezioni.

Oltre a queste entità, ai loro campi e alle loro relazioni, dobbiamo definire tutte le altre informazioni necessarie per creare una componente: quali pagine ("visualizzazioni") vogliamo vedere, che tipo di estensione, quale spazio dei nomi usiamo, ecc. Tutto ciò è memorizzato nel modello in modo tale che le informazioni possano essere utilizzate da un generatore per produrre il componente da esso.

In un approccio basato sul modello, il modello che costruisci viene formalizzato. Non si tratta di uno schizzo in stile libero di ciò che si vuole costruire, ma di un insieme di informazioni rigorosamente definito da cui un componente può essere generato automaticamente.

Strumenti con un modello implicito

In questa serie abbiamo visto diversi strumenti per realizzare un componente: Component Creator, Component Generator e Joomla Component Builder. Tutti usano questo principio per raccogliere prima tutte le informazioni (il "modello") necessarie per costruire il componente e quindi generare il componente da tali informazioni. Analizzando gli schermi che devi compilare per produrre un componente, puoi vedere quali informazioni vengono memorizzate nei loro modelli.

Quello che puoi mettere nel modello di un tale strumento è un dato di fatto, non puoi cambiarlo. Si tratta di una parte implicita dell'applicazione.

Metalivello

La differenza principale con gli strumenti MDE generali, come Xtext (dove è stato prodotto JooMDD) o JetBrains MPS, è che con loro si dice esplicitamente cosa Vuoi inserire il tuo modello. Ciò avviene definendo un "linguaggio di modellizzazione", generalmente noto come "linguaggio specifico per dominio" (DSL). Questo è un meta-livello che ti permette di creare qualsiasi modello tu voglia.

Più semplice: utilizzando moduli

Nel Generatore di estensioni tutto viene inserito nel modello con i moduli. Questo è lo stesso di altri strumenti (Component Creator, Component Generator e Joomla Component Builder). Inizialmente i moduli che vengono utilizzati ora in Extension Generator erano basati sul linguaggio di modellazione di JooMDD, quindi l'Extension Generator ha raccolto esattamente le stesse informazioni nel suo modello come ha fatto JooMDD.

Creare un linguaggio di modellazione per definire esplicitamente ciò che si desidera memorizzare nel modello non è facile. Nel Generatore di Estensione che viene fatto più semplice utilizzando i moduli, anche sul metalivello: utilizza i moduli per definire i moduli utilizzare per inserire informazioni nel modello. Queste meta-forme sono chiamate Project Forms nel Generatore di estensioni.

Generazione di un generatore

Una volta che hai inserito tutto nel tuo modello, il componente viene generato da esso. In Component Creator, Component Generator e Joomla Component Builder, questo generatore è di nuovo una scatola nera, implicitamente fornita dallo strumento. Non puoi alterarlo.

Nel Generatore di Estensione è possibile modificare la parte del generatore. Un generatore è principalmente una mappatura delle informazioni nel modello alle variabili in un file modello. Il codice Boilerplate, come il modo predefinito per codificare le classi Model, View e Controller, è mantenuto in Twig-templates nel Generatore di estensioni. La parola "modello" è qui usata in un senso più ampio rispetto a un modello in Joomla: è qualsiasi pezzo di codice in cui sono inserite le variabili.

Fino ad ora la mappatura delle informazioni nel modello a tali modelli è effettuata in codice, ma sto lavorando per fare tutto ciò con i moduli.

Quindi, nel Generatore di Estensione entrambi Quello che metti nel modello (moduli di progetto) e Cosa viene generato dal modello può essere modificato.

Creazione di un componente con Extension Generator

Attualmente il Generatore di estensioni utilizza ancora il modello utilizzato in JooMDD per definire quale componente si desidera avere. Una buona proprietà di questo modello è che non è specifico per Joomla, ma più generale. In questo modo questo stesso modello può essere utilizzato anche con altri generatori, come per WordPress, Laravel o qualsiasi altra cosa.

Questo modello attuale è composto da 3 parti:

  1. Dati: entità e le loro relazioni.
  2. Interazione: quali pagine ("visualizzazioni") si desidera inserire nel componente e quali entità sono utilizzate in tali pagine.
  3. Informazioni generali:che tipo di estensione vuoi, quali pagine vuoi usare in frontend e backend, parametri generali, namespace ecc.

Nella Episodio 4 di questa serie ho elencato caratteristiche ("Bells & Whistles") che sono built-in in Joomla e può essere utilizzato in un componente personalizzato, come il blocco, la gestione degli alias, l'ordine degli articoli, i tag, l'impaginazione eccetera. In Component Creator, Component Generator e Joomla Component Builder, molte di queste funzionalità sono generate per impostazione predefinita. Campi standard come stato, ordine, check_out, check_out_time, created_by o modified_by vengono creati automaticamente da questi strumenti, così come il codice per far funzionare queste opzioni. Ma forse non hai bisogno di tutti quei campi standard e blocchi di codice per tutte le entità. Ad esempio, un carrello della spesa viene utilizzato solo da un utente, quindi le informazioni di blocco e le informazioni su chi ha creato o modificato il carrello sono inutili. Al momento sto pulendo il modello e il generatore per realizzare tutte quelle funzionalità extra facoltativa e aggiungerli solo quando necessario. In modo che venga generato solo il codice necessario, niente di più, niente di meno.

In Joomla Component Builder è possibile inserire codice personalizzato, come i modelli di layout di visualizzazione, in diversi punti del modello. Aggiungo la stessa possibilità nel Generatore di estensioni.

Strumenti di collaborazione e condivisione

Nel mondo model-driven vengono utilizzati diversi strumenti. Nel 2022 un'iniziativa 2 è stato preso per creare un meta-modello con cui i modelli di questi diversi strumenti possono essere scambiati. Di conseguenza è ora possibile utilizzare uno strumento per creare un modello, un altro per modificarlo ulteriormente e un altro ancora per generare da quel modello. Quindi, invece di competere l'uno con l'altro e inventare la stessa ruota, ora è possibile utilizzare i punti di forza di diversi strumenti.


Ho in mente lo stesso ideale per gli strumenti per creare un componente. Ecco perché ora sto definendo il modello utilizzato da Joomla Component Builder in questo Generatore di estensioni. Per poter scambiare modelli, crearli in uno strumento e generarli in un altro o utilizzare funzionalità come JCB Super Powers altrove.

Un meta-modello è uno strumento potente. Questa tecnica è stata utilizzata anche per integrare le informazioni provenienti da diversi CMS. 3.

Generatore di estensione

  • L'obiettivo è: più facile da fare componenti Joomla (modello con forme).
  • Non solo Joomla modellazione specifica.
  • Flessibilità illimitata:
    • Generare generatori (utilizzando moduli).

Generare moduli di meta-livello (moduli di progetto) per inserire informazioni nel modello

Possibilità di utilizzare come meta-modello per diversi strumenti. Ma non ancora pronti per la produzione.

Il prossimo mese

Nella prossima puntata (edizione maggio 2025) chiuderemo questa serie con una panoramica e alcuni confronti degli strumenti.

  1. , un vero e proprio “dottore Joomla”! Note JooMDDE' stato anche oggetto della tesi di
  2. Dennis Priefer .Verso un ecosistema di componenti interoperabili per gli strumenti di modellazione sul web. L'iniziativa LionWeb:
  3. https://lionweb.io/ Un documento del 2022 in cui è stato utilizzato un meta-modello per integrare le informazioni di Drupal, WordPress e Joomla:

https://modeling-languages.com/wp-content/uploads/2022/03/Enabling-CMS-as-a-content-source.pdf

Risorse

https://github.com/HermanPeeren/Extengen

Sviluppare estensioni

Episodio 8: Generatore di estensioni (questo articolo) .Materiale aggiuntivo come il codice per il nostro componente di pianificazione degli eventi di esempio può essere trovato nel

repository per questa serie