Créer un formateur CCK

Créer un formateur CCK

18 May 2010 |  Drupal

Un formateur CCK permet de transformer l’affichage d’un champ en ce que l’on veut, ce n’est ni plus, ni moins qu’une fonction de thème.

Le choix de l’utilisation d’un formateur se fait par l’intermédiaire de l’administration des types de contenus via la rubrique ‘Afficher les champs’. Pour chaque champ vous avez un menu déroulant avec les différents formateurs disponibles.

Prenons l’exemple d’un champ image. Grâce aux différents formateurs disponibles vous avez le choix d’afficher à l’internaute un lien url du fichier, le chemin de l’image ou encore l’image elle même.

La réalisation d’un formateur est vraiment simple. Nous allons donc voir comment en créer un afin de transformer l’affichage d’un champ texte dans lequel on saisit des numéros de téléphone en quelque chose de plus lisible. Cet exemple n’a pas grand interêt mais il va nous permettre de mettre en œuvre facilement la création d’un formateur.

1) Déclaration du formateur CCK

Tout commence par la déclaration de notre formateur à Drupal par le biais de la fonction hook_field_formatter_info()

/**
* Implementation of hook_field_formatter_info().
*/
function monmodule_field_formatter_info() {
  $formatters = array(
    'customphonenumber' => array(
      'label' => t('Modif num tél'),
      'field types' => array('text'),
      'description' => t("Transformation de l'affichage d'un numéro de téléphone"),
    ),
  );

  return $formatters;
}

Grâce à cette fonction nous venons de déclarer notre nouveau formateur ‘customphonenumber’ ainsi que ses paramètres. - label : c’est le nom qui sera affiché dans la liste des formateurs disponibles - field types : c’est la liste des champs cck sur lesquels vous pourrez appliquer le formateur. - description : la description complète de votre champ.

2) Implémentation de la fonction de thème

Nous allons maintenant implémenter le hook_theme() afin d’appliquer un thème à notre formateur.

/**
* Implementation of hook_theme().
*/
function monmodule_theme() {
  $theme = array(
    'monmodule_formatter_customphonenumber' => array(
      'arguments' => array('element' => NULL),
    ),
  );

  return $theme;
}

Il ne nous reste plus qu’à construire notre thème afin de modifier l’apparence du champ.

3) Création de notre thème

Notre thème va nous permettre d’effectuer les transformations que l’on veut sur notre champ. Toutes les informations du champs se trouvent dans la variable $element.

/**
* Theming functions.
*/
function theme_monmodule_formatter_customphonenumber($element) {
  $output = '';
  $phone_number = $element['#item']['value'];
  $output = wordwrap(filter_xss($phone_number), 2, '.', 1);

  return $output;
}

Maintenant pour appliquer votre formateur il ne vous reste plus qu’à vous rendre sur la page ‘Afficher les champs’ de votre type de contenu afin de le sélectionner. N’oubliez pas que pour que votre champ apparaisse dans la liste, vous devez régénérer les thèmes disponibles en flushant vos caches, afin que vos modifications soient prises en compte.

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