Czy zmienić hook_field_formatter_view?

11

Jaki jest najlepszy sposób zmiany mocy wyjściowej? Znalazłem „ hook_field_formatter_view ”, ale wygląda na to, że „hook_field_formatter_view_alter” istnieje. W moim przypadku mam pola adresu (moduł Adres), które były używane w okienkach „Wysyłka” i „Płatności” na stronie kasy DrupalCommerce . Chcę dodać js do tych pól, najlepiej przy użyciu interfejsu API formularzy Drupal „#attached”

volocuga
źródło
Jaki JS chcesz dodać do tych pól?
saadlulu,
wtyczka autouzupełniania jquery
volocuga

Odpowiedzi:

9

Możesz spróbować to zmienić za pomocą funkcji wstępnego przetwarzania:

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

Przeprowadziłem test, aby zmodyfikować zmienne $ [„element”] [„# załączony”] [„js”], ale Drupal nie rozpoznał zmian w elemencie. Nie pewny dlaczego. Może być konieczne użycie drupal_add_js.

moc
źródło
5

hook_field_formatter_view()Określona przez konfigurację ekranu nazywa się field_default_view(), która z kolei jako (warstwę lub dwa pod nim) o field_attach_view().

Z drugiego linku widać, że wywołuje hook_field_attach_view_alter()to po zakończeniu formatowania pól:

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

więc powinieneś być w stanie zdefiniować ten hak.

Zauważ jednak, że będziesz musiał ponownie znaleźć pole na encji, ponieważ uruchamia hak dla całej tablicy renderowania, a nie tylko tablicy renderowania dla jednego pola. Ale przykładowy hak połączony z powyższym daje przykład, jak to zrobić.

JP
źródło