Crea il tuo primo modulo Drupal 8

primo-modulo-drupal8-impesud

Lo sviluppo di moduli in Drupal 8 rappresenta un importante passaggio da Drupal 7. Questo è il primo tutorial in cui esaminerò e spiegherò il processo di apprendimento dello sviluppo in Drupal 8. Il modulo che creiamo in questo tutorial è il più semplice possibile e ha lo scopo di aiutarti a farti un’idea sulla struttura del modulo.

Prima di iniziare, voglio indicarti le principali differenze con lo sviluppo di moduli in Drupal 7. Di seguito è riportato un elenco di concetti che verranno utilizzati in questo tutorial:

  • Drupal 8 è orientato ad oggetti (OOP) mentre Drupal 7 è principalmente procedurale. Ciò significa che molto del tuo codice sarà ora scritto in classi piuttosto che in semplici funzioni. Ciò sarà travolgente per molti, ma renderà lo sviluppo dei moduli più flessibile e aggiornerai le tue competenze alle moderne pratiche di programmazione.
  • Ogni classe avrà bisogno di un namespace. Il namespacing garantisce che una certa classe non sia in conflitto con un’altra classe che abbia lo stesso nome. Puoi pensarlo come una directory in un file system. Puoi anche avere due file con lo stesso nome in diverse directory.
  • Drupal usa ed estende le librerie esterne.
  • Drupal 8 usa i file .yml invece dei file .info. i file .yml sono anche usati per definire voci di menu, schede, ecc.
  • Non è necessario utilizzare hook_menu () per associare un URL a una funzione di callback. Questo è ora gestito da una “menu class” e un “route”.
  • Drupal 8 utilizza plugin che forniscono funzionalità intercambiabili.
  • Drupal 8 utilizza annotazioni PHP. Le annotazioni sono incluse nei commenti PHP e contengono informazioni vitali su una classe. Il sistema di plugin Drupal 8 li usa per descrivere i plugin e sono utilizzati da Drupal per rivelare il tuo plugin.

Dai un nome al tuo modulo

Come in Drupal 7, il primo compito è nominare il modulo. Abbiamo bisogno di creare un nome macchina che verrà utilizzato in tutto il sistema. I nomi delle macchine sono usati nelle funzioni e metodi all’interno del tuo modulo.

Chiamerò questo modulo “Primo modulo” con un nome macchina primo_modulo.

Crea la cartella del modulo

In Drupal 7, i moduli principali vanno nella directory /modules e dovresti inserire i tuoi moduli “contrib” e personalizzati nella directory sites/all/modules o sites/nomesito/modules. In D8, i moduli core sono presenti nella directory /core in modo da poter inserire i propri “contrib” e moduli personalizzati nella directory /modules. Continuerò con la pratica di Drupal 7 e li inserirò in sites/all/modules.

  • Crea una nuova directory in /sites chiamata “all”.
  • All’interno di “all” crea una directory “modules”.
  • Crea una directory chiamata “primo_modulo” all’interno della directory “modules”.

Creare un file info yaml

È necessario creare un file yaml per informare a Drupal dell’esistenza del modulo. Questo è simile alla creazione di un file .info in Drupal 7.

Il nome del file dovrebbe essere il nome della macchina del tuo modulo con l’estensione .info.yml. In questo caso, sarà primo_modulo.info.yml.

Crea primo_modulo.info.yml nella radice della directory primo_modulo.

Crea un file .module

In Drupal 7, il file .module è richiesto anche se non contiene alcun codice, in Drupal 8 è opzionale. Ne creerò uno che può essere utilizzato in un secondo momento se è necessario implementare altre funzioni.

  • Creane uno chiamato primo_modulo.module nella radice della directory “primo_modulo”.

Crea la directory src

Dobbiamo creare una sottodirectory all’interno della directory del modulo per i controller, plugin, form, template e test. Questa sottodirectory dovrebbe essere chiamata “src”, che è l’abbreviazione di source. Ciò consentirà alla classe controller di eseguire il caricamento automatico, il che significa che non è necessario includere esplicitamente il file della classe.

  • Crea una cartella all’interno della cartella del modulo primo_modulo chiamata “src”.

Crea un controller di base

I controller fanno la maggior parte del lavoro in una tipica applicazione MVC. Ecco i passaggi per creare il controller di base per il modulo:

  • Crea una cartella all’interno di “src” chiamata “Controller”.
  • All’interno della cartella “Controller”, crea un file chiamato PrimoController.php.

In PrimoController.php creeremo un semplice messaggio “Ciao Mondo”.

Aggiungi un file route

Il controller che abbiamo creato sopra non farà nulla in questa fase. Per poter essere eseguito, dobbiamo collegarlo a un route dall’URL al controller.

  • Crea un file chiamato primo_modulo.routing.yml
  • Aggiungi il seguente codice a primo_modulo.routing.yml

Visualizzare il contenuto

Se non lo hai già fatto, attiva il modulo.

Se vai sul percorso /primo, verrai restituito dal controller.

Crea un link nel menu

Il route ora funziona e restituisce il contenuto dal controller. Ma avrai bisogno di conoscere l’URL per raggiungere il contenuto. Per rendere questo più utile, è necessario aggiungerlo al sistema di menu di Drupal. Per fare ciò, è necessario creare un file .yml nel menu.

  • Nella root del modulo, crea primo_modulo.links.menu.yml
  • Aggiungi il seguente codice:

  • Cancella la cache e poi dovresti visualizzare il nuovo link del menu sotto Configurazione -> Sviluppo.
  • Clicca sulla voce del menu e ti porterà in /primo.

E questo è tutto, il tuo primo modulo Drupal 8 con una voce di menu che restituisce una stringa è pronto!

Un blocco personalizzato

Finora abbiamo un percorso personalizzato e una voce di menu che mostra un titolo e una stringa. Facciamo qualcosa in più e aggiungiamo un blocco personalizzato al modulo.

Per prima cosa, dobbiamo creare un nuovo plugin per il modulo. I plugin sono nuovi in Drupal 8 e forniscono funzionalità swappabili.

  • Per iniziare, crea una nuova directory nella cartella “src” del modulo chiamata Plugin. Qui sarà possibile memorizzare tutti i plugin per questo modulo.
  • Quindi creare una cartella denominata “Block”. Un blocco è un tipo di plugin.
  • E all’interno della cartella “Block”, crea un file chiamato CiaoMondo.php.

In quel file, dobbiamo definire il namespace e la classe. Se si utilizza un IDE come PHPStorm, questi verranno creato automaticamente.

È necessario estendere la classe BlockBase. Per fare ciò, aggiungi la seguente dichiarazione d’uso:

use Drupal\Core\Block\BlockBase;

Quindi, il nuovo codice sarà:

Un altro nuovo concetto di Drupal che dobbiamo usare per il blocco è Annotazioni (in inglese, Annotations). Per consentire a Drupal di trovare il codice di blocco, è necessario implementare un commento di codice in un modo specifico, denominato Annotazione.

  • Aggiungi il seguente commento, sopra class CiaoMondo extends BlockBase :

Successivamente, dobbiamo ereditare i doc dalla classe base e aggiungere un metodo build, che restituirà il contenuto del blocco.

Il codice completo per CiaoMondo.php

Posizionando il blocco

Il seguente passaggio che devi eseguire è cancellare la cache, dopodiché si può aggiungere il blocco a una regione. Vai alla pagina di amministrazione dei blocchi, per aggiungere il blocco alla prima area della barra laterale fai clic su “Place block”.

creare-primo-modulo-drupal8-01

Apparirà un popup con un elenco di blocchi disponibili. Cerca “Ciao” per trovare il blocco CiaoMondo appena creato. Fai clic sul pulsante “Place block” nella colonna delle operazioni.

Dopodiché verrà visualizzata la configurazione del blocco. Salvalo.

creare-primo-modulo-drupal8-03

Quindi scorri fino alla fine della pagina del layout dei blocchi e fai clic su “Save blocks”. Ora dovresti visualizzare il blocco nella barra laterale a sinistra del tuo sito.

Ultima nota

Con questo tutorial hai creato un modulo Drupal 8 di base, mappato un URL a un controller che restituisce una stringa e creato un blocco personalizzato. Non preoccuparti se i concetti sono totalmente estranei in questa fase. Continua a esercitarti nel tempo e tutto diventerà più chiaro.

Puoi scaricare tutto il codice del primo tutorial qui: https://github.com/Impesud/primo-modulo-drupal-8

E ricorda, non sei solo: il passaggio a Drupal 8 è un viaggio che l’intera comunità di Drupal sta intraprendendo.

Riepilogo
Creare Modulo Drupal 8
Tipo di Servizio
Creare Modulo Drupal 8
Azienda
Impesud,
Viale Abruzzi 13/A,Milano, Telephone No.+39 02-20572625
Paese
Italy
Descrizione
Lo sviluppo di moduli in Drupal 8 rappresenta un importante passaggio da Drupal 7. Questo è il primo tutorial in cui esaminerò e spiegherò il processo di apprendimento dello sviluppo in Drupal 8.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.