You can use hook_field_formatter_settings_form
to add formatting of the field as shown in example below:
function example_field_formatter_info() {
$info = array();
$info['default_formatter'] = array(
'label' => t('Show as link'),
'field types' => array('example_field_type'),
'settings' => array('target' => '_blank'), // <--- THIS
);
return $info;
}
function example_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$element = array();
if ($display['type'] == 'default_formatter') {
$element['target'] = array(
'#type' => 'select',
'#title' => t('HREF target'),
'#options' => array('_blank' => 'New window', '_self' => 'Same window'),
'#default_value' => $settings['target'],
'#description' => t('Control where the link opens (i.e. set the TARGET attribute of the A element).'),
);
}
return $element;
}
function example_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings']; // Key needs to be defined in info array (who knew?)
$element = array();
if ($display['type'] == 'default_formatter') {
$target = $settings['target'];
foreach ($items as $delta => $item) {
$element[$delta]['#markup'] = "<a href=\"{$item['href']}\" target=\"{$target}\">{$item['label']}</div>";
}
}
return $element;
}
Update #1:
/**
* Implements hook_field_formatter_settings_summary().
*/
function example_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = t('Show as link'); // we use t() for translation and placeholders to guard against attacks
return $summary;
}