Créez vos liens avec l’api de Drupal

Créez vos liens avec l’api de Drupal

14 Dec 2010 |  Drupal

L’intérêt d’un framework c’est d’utiliser les fonctions qui sont fournies avec, mais encore faut-il savoir qu’elles existent. Avec ce post nous allons voir comment créer des liens à la manière de Drupal et ce afin d’en finir avec les liens codés à la main dans vos modules ou dans vos thèmes.

La fonction l() est la meilleure solution pour avoir un lien html propre, traduisible et qui fonctionnera toujours même si vous changez l’adresse de votre site. Cette fonction accepte 3 arguments : 1. $text : Le texte qui sera affiché comme lien à l’utilisateur. 2. $path : L’url vers laquelle votre utilisateur sera redirigé. 3. $options : Un tableau de valeurs afin d’enrichir votre lien, vous pourrez par exemple appliquer une class Css (cet argument n’est pas obligatoire).

Vous l’aurez compris, la fonction l() est simple à utiliser puisqu’il suffit de préciser un titre et une url pour obtenir un lien html encapsulé dans des balises < a >.

Un simple lien

Le cas le plus simple, un titre et un lien.

l(t('Titre'), 'mon/lien/vers/ma/page');

Résultat :

<a href="mon/lien/vers/ma/page">Titre</a>

Notez l’utilisation de la fonction t(), qui permet de rendre le texte traduisible. Cette fonction est à utiliser à chaque fois que vous voulez afficher du texte à un utilisateur.

Lien avec attributs

Pour ajouter des attributs sur vos liens, il faut déclarer un tableau nommé “attributes” puis l’élément que vous voulez ajouter ainsi que sa valeur. Notez l’apparition du troisième argument, le fameux $options.

 l(
  t('Titre'),
  'lien', 
  array(
    'attributes' => array(
      'class' => 'page-link', 
      'target' =>'_blank'
    )
  )
);

Résultat :

  <a href="/lien" class="page-link" target="_blank">Titre</a>

Vous pouvez rajouter d’autres options comme un ‘id’ ou un ‘rel’ par exemple.

Lien image

A la place d’un titre il est possible d’y mettre une image, mais pour que celle-ci soit correctement insérée dans votre lien vous devez préciser que le HTML doit être interprété. Pour cela il suffit d’ajouter l’option html à true. Pensez aussi à mettre un petit alt sur votre image au cas où elle ne s’afficherait pas.

l(
  "<img src='chemin/vers/mon/image.jpg' />", 
  'lien', 
  array(
    'html' => TRUE, 
    attributes => array(
      'alt' => 'monimage'
    )
  )
);

Résultat :

<a href="mon/lien/vers/ma/page"<img src="chemin/vers/mon/image.jpg" alt="monimage"/></a>

Lien complexe

Complexe ou plus compliqué que les précédents, j’avoue que j’ai séché sur l’intitulé :p Pour cet exemple j’ai choisi d’ajouter une destination à mon lien et de le rendre relatif à mon site.

l(
  t('Votez'),
  'user',
  array(
    'attributes' => array(
      'class' => 'page-link',
      'target' => '_blank'
    ),
    'absolute' => 'TRUE',
    'query' => 'destination=votez/pour/cette/page'
  )
);

Résultat :

<a hrf='http://exemple.com/user?destination=votez/pour/cette/page' class="page-link" target="_blank">Votez</a>

En plus d’obtenir un code plus compact et plus facile à lire, la fonction l() passe par les fonctions check_plain() et check_url() afin de sécuriser votre lien dans le but de vous protéger contre des attaques xss

Pour plus d’informations sur la fonction l() et ses options n’hésitez pas à vous rendre sur la page de la fonction l()

Crédits Photo - .curt.

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi