function bg_image_formatter_field_formatter_view in Background Images Formatter 7
Same name and namespace in other branches
- 7.2 bg_image_formatter.module \bg_image_formatter_field_formatter_view()
Implements hook_field_formatter_view().
File
- ./
bg_image_formatter.module, line 213
Code
function bg_image_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
$settings = $display['settings'];
$css_settings = $settings['css_settings'];
$image_style = $settings['image_style'] ? $settings['image_style'] : NULL;
$selectors = explode(PHP_EOL, trim($css_settings['bg_image_selector']));
$colors = explode(PHP_EOL, trim($css_settings['bg_image_color']));
// Cleanup
$selectors = array_map(function ($value) {
return trim($value, ',');
}, $selectors);
$colors = array_map(function ($value) {
return trim($value);
}, $colors);
if (module_exists('token')) {
$tokens_mapping = array_flip(token_get_entity_mapping());
// Replace the tokens.
$selectors = array_map(function ($selector) use ($tokens_mapping, $entity_type, $entity) {
return token_replace($selector, array(
$tokens_mapping[$entity_type] => $entity,
));
}, $selectors);
$colors = array_map(function ($color) use ($tokens_mapping, $entity_type, $entity) {
return token_replace($color, array(
$tokens_mapping[$entity_type] => $entity,
));
}, $colors);
}
switch ($display['type']) {
case 'bg_image_formatter':
foreach ($items as $delta => $item) {
if ($settings['multiple']) {
$css_settings['bg_image_selector'] = $selectors[$delta % count($selectors)];
$css_settings['bg_image_color'] = $colors[$delta % count($colors)];
}
else {
$css_settings['bg_image_selector'] = implode(',', $selectors);
$css_settings['bg_image_color'] = implode('', $colors);
}
$context = array(
'entity_type' => $entity_type,
'entity' => $entity,
'item' => $item,
);
// Let other module alter the CSS settings by implementing the hook:
// hook_bg_image_formatter_css_settings_alter().
drupal_alter('bg_image_formatter_css_settings', $css_settings, $context);
bg_image_add_background_image($item['uri'], $css_settings, $image_style);
}
break;
}
return $element;
}