hooks – Gancho para duplicación de campo

Pregunta:

Tengo un módulo personalizado que está formateando la visualización de un campo de imagen, que puede aceptar varios valores. Me gustaría saber qué gancho debo usar para duplicar el primer valor del campo (por ejemplo, "[image1]"), y agregarlo al principio de la matriz (con array_unshift() supongo) antes del resto de mi Las funciones dan formato a la visualización / tema del campo.

Entonces que fue

  • [imagen1]
  • [imagen2]
  • [image3]

se convierte en

  • [imagen1]
  • [imagen1]
  • [imagen2]
  • [image3]

Luego los voy a tratar por separado, pero creo que ya tengo esa parte resuelta.

Actualmente estoy usando hook_field_formatter_view() , y he intentado agregarlo al principio de la matriz $items en la parte superior de la función, pero eso no pareció funcionar. Si inmediatamente dprint_r() la matriz $items después de esto, se muestra, pero solo se obtienen 3 elementos; Supongo que el número de campos se determina en otro lugar.

Respuesta:

En su lugar, desea hook_field_formatter_prepare_view () . Tenga en cuenta que este gancho opera en un grupo de entidades, no en una sola.

Aquí hay un fragmento de trabajo. Se necesita algo de array-fu para no terminar escribiendo un bucle feo de diez líneas, ya que los deltas deben conservarse lineales.

<?php

function MODULE_field_formatter_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items, $displays) {
  foreach ($entities as $id => $entity) {
    $array = array(0 => $items[$id][0], 1 => $items[$id][0]);
    if (count($items[$id]) > 1) {
      array_splice($array, 2, 0, array_slice($items[$id], 1));
    }
    $items[$id] = $array;
  }
}

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım