Modifier le hook_field_formatter_view?

11

Quelle est la meilleure façon de modifier la sortie de champ? J'ai trouvé " hook_field_formatter_view " mais rien ne ressemble à "hook_field_formatter_view_alter". Dans mon cas, j'ai des champs d'adresse (module Addressfield) qui sont utilisés dans les volets "Expédition" et "Facturation" sur la page de paiement de DrupalCommerce . Je veux ajouter quelques js à ces champs, de préférence en utilisant l'API Form de Drupal "#attached"

volocuga
la source
Quel est le JS que vous voudriez ajouter à ces champs?
saadlulu
plugin jquery autocomplete
volocuga

Réponses:

9

Vous voudrez peut-être essayer de le modifier avec une fonction de prétraitement:

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

J'ai exécuté un test pour modifier $ variables ['élément'] ['# attaché'] ['js'] mais Drupal n'a pas reconnu les changements apportés à l'élément. Pas certain de pourquoi. Ainsi, vous devrez peut-être utiliser drupal_add_js.

un pouvoir
la source
5

Le hook_field_formatter_view()spécifié par la configuration d'affichage est appelé field_default_view(), qui est lui-même appelé (une couche ou deux en dessous) par field_attach_view().

Vous pouvez voir dans le deuxième lien que cela appelle une hook_field_attach_view_alter()fois terminé avec les formateurs de champ:

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

vous devriez donc être en mesure de définir ce crochet.

Notez, cependant, que vous devrez retrouver le champ sur l'entité, car il exécute le hook pour l'ensemble du tableau de rendu, et pas simplement le tableau de rendu pour un champ. Mais l'exemple de crochet lié à ci-dessus donne un exemple de la façon de procéder.

JP
la source