it-swarm-ja.com

hook_field_formatter_viewを変更しますか?

フィールド出力を変更する最良の方法は何ですか? 「 hook_field_formatter_view 」は見つかりましたが、「hook_field_formatter_view_alter」のようなものは存在しないようです。私の場合、 DrupalCommerce のチェックアウトページの[Shipping]ペインと[Billing]ペインで使用される住所フィールド(Addressfieldモジュール)があります。これらのフィールドにいくつかのjsを追加したいのですが、DrupalのフォームAPI "#attached"を使用することをお勧めします

11
volocuga

あなたは前処理関数でそれを変更しようとするかもしれません:

function example_preprocess_field(&$variables) {  
  $field_name = $variables['element']['#field_name'];  
  if ($field_name == 'field_example_field') {
    // Your code here.
  }
}

$ variables ['element'] ['#attached'] ['js']を変更するテストを実行しましたが、Drupalは要素。理由は不明なので、drupal_add_jsを使用する必要がある場合があります。

9
apower

表示設定で指定されたhook_field_formatter_view()field_default_view() で呼び出され、それ自体が field_attach_view()

2番目のリンクから、これがフィールドフォーマッタの終了後に hook_field_attach_view_alter() を呼び出すことがわかります。

drupal_alter('field_attach_view', $output, $context);

そのため、そのフックを定義できるはずです。

ただし、1つのフィールドのレンダー配列だけでなく、レンダー配列全体のフックを実行するため、エンティティのフィールドを再検索する必要があることに注意してください。しかし、上記にリンクされているサンプルフックは、その方法の例を示しています。

5
J-P