function field_example_field_formatter_view

Implements hook_field_formatter_view().

Two formatters are implemented.

  • field_example_simple_text just outputs markup indicating the color that was entered and uses an inline style to set the text color to that value.
  • field_example_color_background does the same but also changes the background color of div.region-content.

See also

field_example_field_formatter_info()

Related topics

File

field_example/field_example.module, line 139

Code

function field_example_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
    $element = array();
    switch ($display['type']) {
        // This formatter simply outputs the field as text and with a color.
        case 'field_example_simple_text':
            foreach ($items as $delta => $item) {
                $element[$delta] = array(
                    // We create a render array to produce the desired markup,
                    // "<p style="color: #hexcolor">The color code ... #hexcolor</p>".
                    // See theme_html_tag().
'#type' => 'html_tag',
                    '#tag' => 'p',
                    '#attributes' => array(
                        'style' => 'color: ' . $item['rgb'],
                    ),
                    '#value' => t('The color code in this field is @code', array(
                        '@code' => $item['rgb'],
                    )),
                );
            }
            break;
        // This formatter adds css to the page changing the '.region-content' area's
        // background color. If there are many fields, the last one will win.
        case 'field_example_color_background':
            foreach ($items as $delta => $item) {
                $element[$delta] = array(
                    '#type' => 'html_tag',
                    '#tag' => 'p',
                    '#value' => t('The content area color has been changed to @code', array(
                        '@code' => $item['rgb'],
                    )),
                    '#attached' => array(
                        'css' => array(
                            array(
                                'data' => 'div.region-content { background-color:' . $item['rgb'] . ';}',
                                'type' => 'inline',
                            ),
                        ),
                    ),
                );
            }
            break;
    }
    return $element;
}