1

I've created a custom field formatter using hook_field_formatter_info() and implemented it using hook_field_formatter_view().

My formatter requires additional javascript though and at the moment I'm including it in hook_field_formatter_view() but I have a feeling there's gotta be a better place to do this.

However there is no hook_field_formatter_preprocess() (there is a formatter_prepare_view() though but it doesnt't seem right)

Any ideas?

1 Answer 1

4

Adding the JavaScript in hook_field_formatter_view() works just fine. Just also be sure to use #attached and not drupal_add_js() since that way your file is included in the render cache.

function mymodule_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) { $element = array(); $settings = $display['settings']; foreach ($items as $delta => $item) { $element[$delta] = // Blah blah blah add output for each $items in $element as a render array. } // Add the JavaScript file. $element['#attached']['js'][] = drupal_get_path('module', 'mymodule') . '/mymodule.field.js; return $element; } 
2
  • Since I was calling a theme function in the formatter_view() anyway I just moved the include js part to hook_preprocess_hook(), this is great know to know though! Commented Jan 10, 2012 at 19:16
  • can we add css also in the same way? $element['#attached']['css'][] = drupal_get_path('module', 'mymodule') . '/mymodule.field.css; Commented Aug 29, 2016 at 12:30

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.