Hook_field_formatter_view ändern?


11

Was ist der beste Weg, um die Feldausgabe zu ändern? Ich habe " hook_field_formatter_view " gefunden, aber es scheint nichts wie "hook_field_formatter_view_alter" zu existieren. In meinem Fall habe ich Adressfelder (Adressfeldmodul), die in den Bereichen "Versand" und "Abrechnung" auf der Checkout-Seite von DrupalCommerce verwendet werden . Ich möchte diesen Feldern einige js hinzufügen, vorzugsweise mithilfe der Drupal-Formular-API "#attached".


Was ist die JS, die Sie diesen Feldern hinzufügen möchten?
Saadlulu

JQuery Autocomplete Plugin
Volocuga

Antworten:


9

Möglicherweise möchten Sie versuchen, es mit einer Vorverarbeitungsfunktion zu ändern:

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

Ich habe einen Test durchgeführt, um $ variables ['element'] ['# attach'] ['js'] zu ändern, aber Drupal hat die Änderungen am Element nicht erkannt. Nicht sicher warum. Daher müssen Sie möglicherweise drupal_add_js verwenden.


5

Die hook_field_formatter_view()von der Anzeigekonfiguration angegebene wird aufgerufen field_default_view(), die selbst von (ein oder zwei Ebenen darunter) von aufgerufen wird field_attach_view().

Sie können dem zweiten Link entnehmen, dass dieser aufgerufen wird, hook_field_attach_view_alter()nachdem er mit den Feldformatierern fertig ist:

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

Sie sollten also in der Lage sein, diesen Hook zu definieren.

Beachten Sie jedoch, dass Sie das Feld in der Entität erneut finden müssen, da es den Hook für das gesamte Render-Array ausführt und nicht nur das Render-Array für ein Feld. Der oben verlinkte Beispiel-Hook gibt jedoch ein Beispiel dafür.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.