¿Alterar hook_field_formatter_view?

11

¿Cuál es la mejor manera de alterar la salida de campo? Encontré " hook_field_formatter_view " pero parece que no existe nada como "hook_field_formatter_view_alter". En mi caso, tengo campos de dirección (módulo de campo de dirección) que se utilizan en los paneles "Envío" y "Facturación" en la página de pago de DrupalCommerce . Quiero agregar algunos js a estos campos, preferiblemente usando la API de formulario de Drupal "# adjunto"

volocuga
fuente
¿Cuál es el JS que le gustaría agregar a estos campos?
saadlulu
Complemento de autocompletar jquery
volocuga

Respuestas:

9

Es posible que desee intentar alterarlo con una función de preproceso:

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

Ejecuté una prueba para modificar $ variables ['elemento'] ['# adjunto'] ['js'] pero Drupal no reconoció los cambios en el elemento. No estoy seguro de por qué. Por lo tanto, es posible que deba usar drupal_add_js.

un poder
fuente
5

La hook_field_formatter_view()especificada por la configuración de pantalla se llama field_default_view(), que se llama a sí misma (una capa o dos debajo de ella) por field_attach_view().

Puede ver desde el segundo enlace que esto llama hook_field_attach_view_alter()después de que haya terminado con los formateadores de campo:

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

entonces deberías poder definir ese gancho.

Sin embargo, tenga en cuenta que tendrá que volver a encontrar el campo en la entidad, ya que ejecuta el gancho para toda la matriz de representación, no simplemente la matriz de representación para un campo. Pero el gancho de ejemplo vinculado a arriba da un ejemplo de cómo hacerlo.

JP
fuente