Salta al contenuto principale

Creazione di moduli personalizzati per Drupal: Una guida completa

Profile picture for user luca77king

Drupal è un sistema di gestione dei contenuti (CMS) estremamente flessibile e scalabile, grazie alla sua architettura modulare. Ciò significa che gli sviluppatori possono creare moduli personalizzati per soddisfare le esigenze specifiche delle loro applicazioni. In questo articolo, ti guideremo attraverso il processo di creazione di moduli personalizzati per Drupal, fornendoti informazioni dettagliate e best practice per aiutarti a creare moduli efficienti e funzionali.

Prima di iniziare, è importante capire cosa sono i moduli di Drupal. I moduli sono piccole applicazioni che si integrano con il core di Drupal, consentendoti di estendere la funzionalità del sistema e di creare contenuti più complessi. I moduli possono essere utilizzati per aggiungere nuove funzionalità, come ad esempio la gestione dei membri o la creazione di forme di pagamento, oppure per integrare Drupal con altre applicazioni o servizi.

Per creare un modulo personalizzato per Drupal, è altamente consigliato installare il toolkit di sviluppo di Drupal, noto come "Drush". Drush è uno strumento di lin guaggio che ti consente di eseguire comandi e di creare script per gestire il tuo sito Drupal. Puoi scaricare Drush dal sito ufficiale di Drupal.

Creazione di un nuovo modulo

Una volta installato Drush, il prossimo passo è creare un nuovo modulo che verrà chiamato "my_module" (o qualsiasi altro nome preferisci). Per fare ciò, innanzitutto, crea una nuova directory all'interno della cartella `modules/custom` del tuo sito Drupal. Questa directory dovrebbe avere lo stesso nome del modulo, ad esempio `my_module`. All'interno di questa nuova directory, crea un file con estensione `.info.yml`, ad esempio `my_module.info.yml`.

Questo file è fondamentale in quanto contiene le informazioni di base sul modulo, come il nome, la descrizione e la versione. Ecco un esempio di come dovrebbe apparire il contenuto del file `my_module.info.yml`:

name: 'My Module'
type: module
description: 'A custom module for specific functionality.'
core_version_requirement: ^8 || ^9
package: Custom
version: 1.0
dependencies:
  - drupal:node
  • `name`: Il nome leggibile del modulo.
  • `type`: Specifica che si tratta di un modulo.
  • `description`: Una breve descrizione del modulo e della sua funzione.
  • `core_version_requirement`: Indica la versione di Drupal con cui il modulo è compatibile.
  • `package`: Organizza il modulo sotto un gruppo nel menu di amministrazione dei moduli.
  • `version`: La versione del modulo.
  • `dependencies`: Elenca i moduli di cui il tuo modulo dipende, ad esempio, `drupal:node`.

Definizione degli assets statici

Le librerie in Drupal possono includere file CSS e JavaScript necessari per il modulo. Questi vengono definiti in un file .libraries.yml e poi richiamati in due modi

  • nel codice del modulo
  • aggiungendo una voce nel file precedente

Io preferisco il secondo metodo

name: 'My Module'
type: module
description: 'A custom module for specific functionality.'
core_version_requirement: ^8 || ^9
package: Custom
version: 1.0
dependencies:
  - drupal:node
libraries:
  - my_module/nome1

In questo esempio, abbiamo aggiunto la sezione libraries che include una libreria.

Adesso creiamo il file my_module.libraries.yml. Qui specifichiamo i file CSS e JavaScript da includere, oltre alle dipendenze necessarie.

nome1:
  version: 1.x
  header: false
  css:
    theme:
      css/animate.min.css: {}
  js:
    js/wow.js: {}
    js/about_me.js: {}

Nel contesto delle librerie di Drupal, i livelli indicano dove verranno caricati gli asset specificati, come file CSS e JavaScript.

Theme: Indica che gli asset verranno caricati nel tema del sito. Questo significa che i file CSS e JavaScript definiti sotto questo livello saranno disponibili per il tema attivo del sito, e saranno quindi visibili su tutte le pagine che utilizzano quel tema.

Definire gli asset al livello "theme" è utile quando si desidera che questi asset siano disponibili su tutte le pagine del sito, indipendentemente dal modulo o dalla funzionalità che li utilizza. Ad esempio, se hai degli effetti di animazione che vuoi applicare globalmente al tuo sito, definire quegli asset a livello "theme" assicurerà che siano disponibili ovunque sul sito.

In Drupal, il concetto di "livello theme" si applica principalmente ai file CSS e non ai file JavaScript nel contesto delle librerie. Ciò è dovuto al fatto che i file CSS spesso sono strettamente legati all'aspetto e alla presentazione del sito, e quindi è logico includerli nel tema del sito.

D'altra parte, i file JavaScript possono essere utilizzati per molteplici scopi, non solo per l'aspetto visivo del sito, ma anche per funzionalità interattive, logica di business e altro ancora. Pertanto, non sempre ha senso includere automaticamente tutti i file JavaScript nel tema del sito.

Drupal fornisce un meccanismo per includere i file JavaScript dove sono necessari utilizzando hook e altri metodi di programmazione. Ad esempio, è comune utilizzare hook per includere file JavaScript solo nelle pagine che richiedono determinate funzionalità o interazioni.

Creazione del modulo vero e proprio

Dopo aver creato il file `.info.yml`, potresti voler aggiungere anche un file `.module`, che conterrà i hook e le funzioni personalizzate del modulo. Puoi creare un file chiamato `my_module.module` nella stessa directory. Anche se inizialmente il file può essere vuoto, sarà il luogo dove aggiungerai il codice PHP specifico del modulo.

Esempi di Utilizzo

Ecco alcuni esempi di ciò che potresti includere nel tuo file .module:

/**
 * Implements hook_menu().
 */
function my_module_menu() {
  $items['my-custom-page'] = array(
    'title' => 'My Custom Page',
    'page callback' => 'my_module_custom_page_callback',
    'access callback' => TRUE,
  );
  return $items;
}

/**
 * Callback function for the custom page.
 */
function my_module_custom_page_callback() {
  return 'Hello from my custom page!';
}

Dopo aver creato il file .module e definito il codice del tuo modulo, puoi andare alla pagina di amministrazione dei moduli nel backend di Drupal e abilitare il nuovo modulo. Da qui, il modulo sarà attivo sul tuo sito e il codice in esso contenuto sarà eseguito quando richiesto.

Nelle prossime lezioni vedremo come interagire con il CORE di Drupal, per adesso ci fermiamo qui con la parte tecnica.

Best practice per la creazione di moduli personalizzati

  • Utilizza un nome univoco e descrittivo per il tuo modulo, ad esempio "my_module".
  • Segui le guide di sviluppo di Drupal per creare moduli sicuri e stabili.
  • Utilizza la sintassi corretta per definire le dipendenze nel file "info".
  • Testa il tuo modulo regolarmente per assicurti che funzioni correttamente.
  • Documenta il tuo modulo con informazioni dettagliate sulla sua configurazione e utilizzo.

In conclusione, la creazione di moduli personalizzati per Drupal è un processo relativamente semplice che richiede solo un po' di conoscenza di PHP e delle best practice di sviluppo. Seguendo i passaggi e le best practice descritte in questo articolo, puoi creare moduli personalizzati funzionali e stabili per estendere la funzionalità del tuo sito Drupal.