Drupal hoe kunt u door middel van hook_field_formatter_info een andere formatter aan een cck field toevoegen
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 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
Reactie toevoegen