Dominique De Cooman
Gepubliceerd op Dominique De Cooman (https://dominiquedecooman.com)

Home > Drupal hoe kunt u door middel van hook_field_formatter_info een andere formatter aan een cck field toevoegen

Dominique De Cooman
maandag, June 21, 2010 - 11:27
fields [1]

Hoe kunt u een andere formatter aan een cck veld toevoegen? Een cck formatter is in principe een thematiseringsfunctie waar de waarde van het veld is doorgevoerd. Formatters zijn beschikbaar op "admin/content/node-type/[your node type]/display" in de cck interface.

Het vorige screenshot laat u de build modes van een node blog zien. Hier kunt u veranderen welke formatter gebruikt wordt voor welke build mode. U kunt bijvoorbeeld de afbeelding door een andere formatter laten lopen in de full node dan in de teaser. Dit screenshot is zonder de display suite. Als het mogelijk is zou u de display suite [2] moeten gebruiken. Het zal uw thematiserings leven makkelijker maken. U zult tevens in staat zijn om custom build modes te bepalen. Dan ziet het er zo uit.

Om een andere formatter aan de node displays toe te voegen implementeert u een hook thema. In ons voorbeeld willen we een formatter gebruiken voor onze titel. De formatter zal de h3 tag gebruiken om onze titel te renderen.

<?php

/**
 * Implementation of 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;
}

?>

Then you define your theme function

<?php

function theme_your_module_title_h3($field) {

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

}

?>

En in de laatste stap maakt u deze formatter zichbaar voor cck door middel van hook_field_formatter_info()

<?php

/**
 * Implementation 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,
    ),
  );
}

?>

Tenslotte wanneer u dit niet allemaal in code wilt doen (wat u waarschijnlijk zou moeten omdat het gemakkelijker te controleren is) is er een gemakkelijke module genaamd custom formatters [3]


Bron-URL: https://dominiquedecooman.com/nl/drupal-hoe-kunt-u-door-middel-van-hookfieldformatterinfo-een-andere-formatter-aan-een-cck-field

Links
[1] https://dominiquedecooman.com/nl/blog-topics/fields-0
[2] http://dominiquedecooman.com/module-review/display-suite
[3] http://drupal.org/project/custom_formatters