Creare link in Drupal

Drupal e la funzione l() per creare i collegamenti

Scrivere il codice HTML di un collegamento ipertestuale è una operazione banale, però, durante lo sviluppo di un template Drupal o di un modulo, la funzione l() dell'API Drupal è consigliata per numerosi motivi.

Creare link in Drupal

Un collegamento, o link ipertestuale, oltre a contenere l'indirizzo della pagina di destinazione (href) ed un testo o una immagine di ancoraggio, ha anche altri attributi come la classe (class) o l'identificatore (id)per gli stili, oppure il titolo (title) o l'attributo rel.

Scrivere un link all'interno del codice è quindi semplice, ma se si deve realizzare un template o un modulo di qualità, può dover servire una programmazione più curata. L'uso della funzione l() aiuta lo sviluppatore Drupal.

L'esempio classico per giustificare l'uso di tale funzione è la necessità di ottenere un link verso l'alias del percorso di un nodo al posto di node/$nid. La funzione l() restituisce il link con l'alias (se esiste).

Un altro motivo è la possibilità di poter trasformare l'output attraverso le funzioni di temizzazione che, di default, aggiungono una ulteriore classe nel codice del link nel momento in cui il collegamento punta alla pagina corrente.

Alcuni esempi per usare la funzione l() in Drupal.

Link semplice senza attributi

Il testo di aggancio è la stringa che sarà resa cliccabile, mentre il percorso (URL di destinazione) può essere nella forma node/$nid.

<?php
l("Testo di aggancio", "URL destinazione");
?>

È inoltre consigliato l'uso della funzione t() per gestire la stringa attraverso il sistema di localizzazione, e quindi avremo:

<?php
l(t("Testo di aggancio"), "URL destinazione");
?>

Link con attributi

Si può arricchire l'output aggiungendo degli attributi al collegamento, come la classe o l'ID. Gli attributi vengono passati alla funzione attraverso un vettore.

<?php
l(t("Testo di aggancio"), "URL destinazione", array('attributes' => array(
  'class' => "classe", 'id' => "identificativo", 'rel' => "nofollow"
)));
?>

Assegnare un collegamento ad una immagine

Oltre a del semplice testo, è anche possibile rendere una immagine cliccabile: al posto del testo si può inserire un elemento <img .../>. In questo caso però si deve specificare che si avrà del codice HTML come elemento di ancoraggio. Ecco un esempio:

<?php
l('<img ... />', "URL destinazione", array('html' => "TRUE", 'attributes' => array(
  'class' => "classe", 'id' => "identificativo"
)));
?>

Nel vettore dei parametri della funzione, oltre al parametro attributes, è presente il parametro html.

Indirizzo assoluto per le email

Se il collegamento ipertestuale è relativo ad una email, va aggiunto un parametro, absolute, che segnala l'URI come non modificabile.

<?php
l('Testo di aggancio', "mailto:email@domain.com", array('absolute' => "TRUE"));
?>

Esempio avanzato con imagecache

A questo punto possiamo comporre le varie funzioni di Drupal per ottenere dei link con oggetti realizzati dinamicamente. Ad esempio l'immagine può essere generata con imagecache e quindi passata come parametro alla funzione che genera il collegamento:

<?php 
$image = theme('imagecache', 'imagecache_preset', 'percorso immagine');
l($image, "URL destinazione", array('html' => "TRUE",'attributes' => array(
  'class' => "classe", 'id' => "identificativo"
)));
?>

Ecco quindi alcuni semplici esempi per programmare con facilità un modulo Drupal o un template Drupal.