1. Creare un modulo per Joomla 4.x

In questo tutorial vedremo come sviluppare un semplice modulo per la futura versione del CMS: Joomla 4.x.

Introduzione

Joomla 4 prevede cinque tipi di estensioni:

  • Componenti
    Un componente è una parte principale del sito. Un componente gestisce la manipolazione di dati, così come input e salvataggio nel database. Nella maggior parte dei siti, un componente ha il focus principale in una pagina.
  • Moduli
    Un modulo è un'aggiunta al sito e ne estende le funzionalità. Generalmente un modulo occupa una porzione secondaria della pagina web e non è considerato il focus principale della pagina. Può essere visualizzato in differenti posizioni ed è anche possibile scegliere su quali voci di menu attive dovrà essere visualizzato. I moduli sono estensioni leggere e flessibili. Sono utilizzati per piccoli pezzi della pagina e sono generalmente meno complessi rispetto ai componenti e sono utilizzabili anche in vari componenti.
  • Plugin
    Un plugin manipola l'output che è già generato dal sistema. Generalmente non viene eseguito separatamente rispetto al sito. Preleva i dati da un'altra sorgente (es. il contenuto) e li manipola prima della visualizzazione. Un plugin di solito lavora nell'ombra.
  • Lingue
    Probabilmente le estensioni di tipo più semplice sono i file di lingua. Essenzialmente i file dei pacchetti di lingua consistono in coppie di chiavi/valore che forniscono la traduzione di stringhe di testo statiche, assegnate all'interno del codice sorgente di Joomla.
  • Template
    Un template è sostanzialmente il design di un sito Joomla.

Joomla 4 è costruito utilizzando cinque diverse applicazioni:

  • Installation (utilizzata per installare Joomla e dev'essere eliminata dopo l'installazione)
  • Administrator (backend - utilizzata per gestire il sito ed il suo contenuto)
  • Public oppure Site (frontend - utilizzata per visualizzare il sito ed il suo contenuto)
  • CLI (utilizzata per accedere a Joomla tramite la riga di comando e per i Cron Job)
  • API (web services - utilizzata per creare le APIs per i contenuti accessibili da sistemi automatici)

L'applicazione d'installazione è utilizzata una sola volta. Le applicazioni administrator e public sono utilizzate attraverso i concetti di componenti e moduli. Ogni modulo ha un singolo punto d'accesso localizzato in Moduli e di conseguenza nella cartella administrator/modules. Questo punto d'accesso è denominato mod_modulename/mod_modulename.php (il prefisso mod_ è un retaggio del passato). Il punto d'accesso per il modulo di login è per esempio /mod_login/mod_login.php.

Requisiti

Per seguire questo tutorial è necessario avere a disposizione Joomla! 4.x (attualmente versione Alpha 8).

È possibile scaricare Joomla 4 da GitHub, sul sito Joomla! Developer Network oppure lanciare un'istanza gratuitamente su launch.joomla.org.

1. Sviluppare un semplice modulo

È possibile vedere molti esempi di moduli nell'installazione standard di Joomla. Per esempio:

  • Menu
  • Ultime Notizie
  • Modulo di Login
  • e molti altri.

Questo tutorial spiega come creare un semplice modulo. Attraverso questo tutorial sarà possibile imparare le strutture di base di un file di un modulo per Joomla 4. Questa struttura di base può quindi essere estesa per produrre moduli più elaborati.

Struttura del file

Ci sono alcuni file di base che sono utilizzati nel pattern standard di sviluppo dei moduli:

  • mod_foo.php - Questo file è il punto d'accesso per il modulo. Eseguirà qualsiasi routin di inizializzazione necessaria, chiamerà le routine dell'helper per raccogliere i dati necessari ed include il template che visualizzerà l'output del modulo.
  • mod_foo.xml - Questo file contiene informazioni sul modulo. Definisce i file che dovranno essere installati dall'installatore di Joomla e specifica le configurazioni dei parametri per il modulo.
  • tmpl/default.php - Questo è il template del modulo. Questo file preleva i dati raccolti da mod_foo.php e genera il codice HTML che sarà visualizzato nella pagina.
  • language/en-GB/en-GB.mod_foo.ini e language/en-GB/en-GB.mod_food.sys.ini - Questi sono i file che forniscono il testo in Inglese (Regno Unito).

Creare mod_foo.php

Il file mod_foo.php eseguirà i seguenti compiti:

  • Importare la classe ModuleHelper nello scope attuale. Sarà necessaria successivamente per visualizzare l'output.
  • Includere il template per visualizzare l'output.

La classe helper è importata allo scope attuale all'inizio del file.

use Joomla\CMS\Helper\ModuleHelper;

Al termine includiamo il template per visualizzare l'output tramite

require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));

Il file mod_foo.php completo

mod foo php

Nota: In Joomla 3.x generalmente era utilizzata questa riga:

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); .

Non è più necessario utilizzarla in Joomla 4.x. Ulteriori informazioni.

La riga di codice non ancora spiegato è: defined('_JEXEC') or die; . Questa riga assicura che il file venga richiamato ed eseguito dall'applicazione Joomla. Si tratta di un controllo necessario per prevenire l'iniezione di variabili o altri potenziali problemi di sicurezza.

Creare tmpl/default.php

Il file default.php è il template utilizzato per visualizzare l'output del modulo.

Il file tmpl/default.php completo

Il codice per il file tmpl/default.php sarà simile a questo:

mod foo default php

Un importante punto da tenere in mente è che il file del template ha lo stesso scope del file mod_foo.php. Ciò significa che una variabile può essere definita nel file mod_foo.php e quindi utilizzata nel file del template senza dover includere dichiarazioni aggiuntive o chiamate di funzioni.

Creare mod_foo.xml

Il file mod_foo.xml è il file d'installazione del modulo. La maggior parte del codice è autoesplicativa.

Il file mod_foo.xml completo

Il codice per il file mod_foo.xml sarà simile a questo:

mod foo xml

Creare i file di lingua

I file language/en-GB/en-GB.mod_foo.ini e language/en-GB/en-GB.mod_food.sys.ini sono utilizzati per tradurre il testo nel frontend e nel backend.

Il codice per il file language/en-GB/en-GB.mod_food.sys.ini è simile al seguente:

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"

Il codice per il file language/en-GB/en-GB.mod_food.ini è simile al seguente:

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"

Il file .sys.ini è utilizzato per tradurre la descrizione dell'estensione in fase di installazione, mentre il file .ini è utilizzato per tradurre le restanti stringhe e la descrizione quando si apre l'estensione.

Ulteriori approfondimenti sui file di lingua sono disponibili qui.

Test del Modulo

Adesso è possibile comprimere tutti i file in un unico file zip ed installarlo attraverso Gestione Estensioni dal backend di Joomla.

D'ora in poi sarà possibile scegliere il proprio modulo in Gestione Moduli quando si crea un nuovo modulo nel sito.

1050px Moduletutorial1 en

1050px Moduletutorial2 en

Nel frontend il modulo sarà visualizzato come segue:

1050px Moduletutorial3 en

Conclusione

Lo sviluppo di moduli per Joomla è un processo semplice e lineare. Utilizzando le tecniche descritte in questo tutorial, è possibile sviluppare con pochi sforzi una varietà senza fine di moduli.

I moduli di esempio per questo tutorial possono essere trovati qui.