回答:
個人的には、フォーマッターがより良い解決策だと思います。
実装する必要があるフックは2つだけです。
例えば:
function MYMODULE_field_formatter_info() {
return array(
'my_formatter' => array(
'label' => t('My formatter'),
// The important bit...
'field types' => array('field_type'),
),
);
}
function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings'];
$element = array();
if ($display['type'] == 'my_formatter') {
foreach ($items as $delta => $item) {
$element[$delta] = array('#markup' => $item['value']);
}
}
return $element;
}
より詳細な外観については、サンプルモジュールをダウンロードし、field_exampleをご覧ください。そこには、多くのコードとドキュメントが用意されています。
カスタムモジュールを開発するか、「カスタムフォーマッタ」モジュールを使用できます。
最初のケースでは、いくつかのDrupal 7フックを実装するモジュールを記述する必要があります:hook_field_formatter_info()
、hook_field_formatter_view()
およびhook_theme()
。hook_field_formatter_info()
フォーマッタタイプを宣言するために使用されます。この関数は、フォーマッターの説明を含む配列を返します。キーはフォーマッタ名であり、ラベルとフィールドタイプの配列があります。あなたが実装する必要が後hook_field_formatter_view()
とhook_theme()
テンプレートを定義するために。フィールドフォーマッタAPIの詳細については、ドキュメントをご覧ください。
2番目のケースでは、すべてのフィールドのカスタム表示フォーマッターを作成できるカスタムフォーマッターモジュールを使用できます。このモジュールを使用すると、カスタムPHPコードまたはトークン付きのHTMLコードを使用してフォーマッターを作成できます。
使い方も設定も非常に簡単なので、2番目の方法をお勧めします。