function field_delimiter_preprocess_field in Field Delimiter (Multi Value Field Formatter) 8
Implements hook_preprocess_field().
File
- ./
field_delimiter.module, line 68 - Provides extra field formatter settings to specify delimiters for multi-value fields.
Code
function field_delimiter_preprocess_field(&$variables) {
if (count($variables['items']) < 2) {
// No need for delimiter.
return;
}
// Get a few convenient handles.
$entity = $variables['element']['#object'];
$field_name = $variables['element']['#field_name'];
$view_mode = $variables['element']['#view_mode'];
// Drill down to field formatter settings.
$render_display = EntityViewDisplay::collectRenderDisplay($entity, $view_mode);
$field_display = $render_display
->getComponent($field_name);
if (!empty($field_display['third_party_settings']['field_delimiter']) && !empty($delimiter = $field_display['third_party_settings']['field_delimiter']['delimiter'])) {
// Sanitize the delimiter, allow a few reasonable HTML elements.
$safe_delimiter = Xss::filter($delimiter, array(
'br',
'hr',
'span',
'img',
'wbr',
));
// Modify the output if necessary.
if (!empty($safe_delimiter)) {
$item_keys = array_keys($variables['items']);
$last_item_delta = end($item_keys);
foreach ($variables['items'] as $delta => &$item) {
if ($delta != $last_item_delta) {
$item['content']['#suffix'] = $safe_delimiter;
}
}
}
}
}