Field/CCK Formatters
“God has given you one face, and you make yourself another.”
 - Fortune cookie in my desk drawer


                                                               Helior Colorado
                                                                  ihatespam@helior.info
What are Field Formatters?
What are Field Formatters?
• Means to present field data in a
 displaying entity
What are Field Formatters?
• Means to present field data in a
 displaying entity
• Is pluggable
What are Field Formatters?
• Means to present field data in a
 displaying entity
• Is pluggable
• Provides a layer of configurability
What are Field Formatters?
• Means to present field data in a
 displaying entity
• Is pluggable
• Provides a layer of configurability
• Is extendable via various methods
What are Field Formatters?
• Means to present field data in a
 displaying entity
• Is pluggable
• Provides a layer of configurability
• Is extendable via various methods
• If done right, can be reused in any
 site
Defining a Field Formatter:
hook_field_formatter_info()


label

description

field types

multiple values

settings
Rendering a Field Formatter:
hook_field_formatter_view()


Return an array or renderable
arrays – “N is the only number”
Providing configurations:
hook_field_formatter_settings_form()



Standard Form API stuff.

Returning a new form element.

This will help:
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
Displaying configuration summary:
hook_field_formatter_settings_summary()




Output a string of whatever you
think is meaningful.
Pre-build formatter processing:
hook_field_prepare_view()




Custom data massaging goes
here.

Rarely used.
Review the steps:
Review the steps:
• Define formatter
  hook_field_formatter_info()
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)



• Optionally provide settings
  hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &
  $form_state)
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)



• Optionally provide settings
  hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &
  $form_state)



• Optionally display settings summary
  hook_field_formatter_settings_summary($field, $instance, $view_mode)
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)



• Optionally provide settings
  hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &
  $form_state)



• Optionally display settings summary
  hook_field_formatter_settings_summary($field, $instance, $view_mode)



• Optionally prepare data before build
  hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)



• Optionally provide settings
  hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &
  $form_state)



• Optionally display settings summary
  hook_field_formatter_settings_summary($field, $instance, $view_mode)



• Optionally prepare data before build
  hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)




Useful helpers:
Review the steps:
• Define formatter
  hook_field_formatter_info()



• Return array of renderable arrays
  hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)



• Optionally provide settings
  hook_field_formatter_settings_form($field, $instance, $view_mode, $form, &
  $form_state)



• Optionally display settings summary
  hook_field_formatter_settings_summary($field, $instance, $view_mode)



• Optionally prepare data before build
  hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &
  $items, $display)




Useful helpers:
• field_info_formatter_types()
• field_info_formatter_settings()
• field_view_field()
• field_view_value()
Ideas for Workshop
★ HTML5 Audio    playback controller        ★ Lightbox-likegallery for images
★ Email address “mailto:” link              ★ Custom date from timestamp
★ Link to Twitter account with selectable   ★ Fully customizable link from a path
  styles

Field formatters

  • 1.
    Field/CCK Formatters “God hasgiven you one face, and you make yourself another.” - Fortune cookie in my desk drawer Helior Colorado ihatespam@helior.info
  • 2.
    What are FieldFormatters?
  • 3.
    What are FieldFormatters? • Means to present field data in a displaying entity
  • 4.
    What are FieldFormatters? • Means to present field data in a displaying entity • Is pluggable
  • 5.
    What are FieldFormatters? • Means to present field data in a displaying entity • Is pluggable • Provides a layer of configurability
  • 6.
    What are FieldFormatters? • Means to present field data in a displaying entity • Is pluggable • Provides a layer of configurability • Is extendable via various methods
  • 7.
    What are FieldFormatters? • Means to present field data in a displaying entity • Is pluggable • Provides a layer of configurability • Is extendable via various methods • If done right, can be reused in any site
  • 8.
    Defining a FieldFormatter: hook_field_formatter_info() label description field types multiple values settings
  • 9.
    Rendering a FieldFormatter: hook_field_formatter_view() Return an array or renderable arrays – “N is the only number”
  • 10.
    Providing configurations: hook_field_formatter_settings_form() Standard FormAPI stuff. Returning a new form element. This will help: $display = $instance['display'][$view_mode]; $settings = $display['settings'];
  • 11.
  • 12.
  • 13.
  • 14.
    Review the steps: •Define formatter hook_field_formatter_info()
  • 15.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display)
  • 16.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) • Optionally provide settings hook_field_formatter_settings_form($field, $instance, $view_mode, $form, & $form_state)
  • 17.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) • Optionally provide settings hook_field_formatter_settings_form($field, $instance, $view_mode, $form, & $form_state) • Optionally display settings summary hook_field_formatter_settings_summary($field, $instance, $view_mode)
  • 18.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) • Optionally provide settings hook_field_formatter_settings_form($field, $instance, $view_mode, $form, & $form_state) • Optionally display settings summary hook_field_formatter_settings_summary($field, $instance, $view_mode) • Optionally prepare data before build hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display)
  • 19.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) • Optionally provide settings hook_field_formatter_settings_form($field, $instance, $view_mode, $form, & $form_state) • Optionally display settings summary hook_field_formatter_settings_summary($field, $instance, $view_mode) • Optionally prepare data before build hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) Useful helpers:
  • 20.
    Review the steps: •Define formatter hook_field_formatter_info() • Return array of renderable arrays hook_field_formatter_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) • Optionally provide settings hook_field_formatter_settings_form($field, $instance, $view_mode, $form, & $form_state) • Optionally display settings summary hook_field_formatter_settings_summary($field, $instance, $view_mode) • Optionally prepare data before build hook_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, & $items, $display) Useful helpers: • field_info_formatter_types() • field_info_formatter_settings() • field_view_field() • field_view_value()
  • 21.
    Ideas for Workshop ★HTML5 Audio playback controller ★ Lightbox-likegallery for images ★ Email address “mailto:” link ★ Custom date from timestamp ★ Link to Twitter account with selectable ★ Fully customizable link from a path styles