Drupal : Comment ajouter un autre formatage à un champ CCK en utilisant hook_field_formatter_info

Comment ajouter un autre formateur à un champ CCK? Un formateur CCK est essentiellement une fonction de thématisation dont dépond la valeur du champ. Les formatteurs sont disponibles sur "admin/content/node-type/[your node type]/display" dans l'interface CCK.

La capture d'écran précédente montre les modes de construction d'un blog nœud. Ici vous pouvez changer le formateur utilisé pour un mode de construction donné. Par exemple, vous pourriez exécuter l'image grâce à un formateur différemment dans le nœud complet que dans le teaser. Cette capture d'écran est sans la suite d'affichage. Si possible, vous devez utiliser le Afficher la suite. Il vous rendra la vie plus facile quand vous voulez faire de la thématisation. Vous serez en mesure de définir des modes de construction aussi. Ensuite, ça ressemblera à cela.

Pour ajouter un autre formateur aux affichages d'un nœud, vous implémentez le hook theme. Dans notre exemple, on veut utiliser un formateur pour notre titre. Le formateur va utiliser la balise h3 pour rendre notre titre.

<?php

/**
 * Implémentation de hook_theme().
 */
function your_module_theme() {
  
$theme_functions = array();

  
// Formatter theming functions.
  
$formatters = array(
    
'your_module_title_h3',
  );

  foreach (
$formatters as $formatter) {
    
$theme_functions[$formatter] = array(
      
'arguments' => array('field' => NULL),
    );
  }
 
  return 
$theme_functions;
}

?>

Ensuite, vous définissez votre fonction de thème

<?php

function theme_your_module_title_h3($field) {

  return 
'<h3>'.$field['object']->title.'</h3>';

}

?>

Et en dernière étape, vous exposer ce formateur à la CCK en utilisant le hook_field_formatter_info()

<?php

/**
 * Implémentation of hook_field_formatter_info(),.
 */
function your_module_field_formatter_info() {
    return array(
    
'your_module_title_h3' => array(
      
'label' => t('Renders text tru a h3 tag'),
      
'field types' => array('text'),
      
'multiple values' => CONTENT_HANDLE_MODULE,
    ),
  );
}

?>

Enfin, lorsque vous ne voulez pas faire tout cela dans le code (même si celà est recommandé parce que ça rend l'affichage des champs plus simple à contrôler), il y a un module pratique appelé Formatteurs personnalisés