1 field_example.module field_example_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display)

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

modules/examples/field_example/field_example.module, line 141
Hook implementations for the Field Example module.

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_head_tag().
          '#type' => 'head_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' => 'head_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;
}