hook_field_formatter_viewを変更しますか?


11

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


これらのフィールドに追加するJSは何ですか?
saadlulu 2012

jqueryオートコンプリートプラグイン
volocuga '17

回答:


9

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

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を使用する必要がある場合があります。


5

hook_field_formatter_view()で呼び出される表示構成によって指定されたfield_default_view()それ自体により(その下の層又は2)と呼ばれ、field_attach_view()

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.