Tengo un módulo personalizado que formatea la visualización de un campo de imagen, que puede aceptar múltiples valores. Me gustaría saber qué gancho debería usar para duplicar el primer valor del campo (por ejemplo, "[imagen1]"), y agregarlo nuevamente al comienzo de la matriz ( array_unshift()
supongo) antes de que el resto de mis funciones formatee el visualización / tema del campo.
Entonces que era
- [imagen1]
- [imagen2]
- [imagen3]
se convierte
- [imagen1]
- [imagen1]
- [imagen2]
- [imagen3]
Luego los voy a tema por separado, pero creo que ya tengo esa parte resuelta.
Actualmente estoy usando hook_field_formatter_view()
, y he tratado de agregarlo al comienzo de la $items
matriz en la parte superior de la función, pero eso no pareció funcionar. Si inmediatamente aparece dprint_r()
la $items
matriz después de esto, se muestra, pero solo se obtienen 3 elementos; Supongo que el número de campo se determina en otro lugar.
hook_field_formatter_view
pero solo se ejecuta una vez por imagen.Respuestas:
En su lugar, desea hook_field_formatter_prepare_view () . Tenga en cuenta que este enlace funciona en un grupo de entidades, no en una sola.
Aquí hay un fragmento de trabajo. Se necesita cierto array-fu para no terminar escribiendo un ciclo feo de diez líneas, ya que los deltas deben conservarse lineales.
fuente
hook_field_formatter_view()
es donde su código genera la salida que se muestra al usuario, por lo que desea una matriz representable como valor de retorno. Así que solo procese la primera imagen dos veces y dele una clase de CSS diferente o algo así.Algo como:
Dado que
hook_field_formatter_view()
espera una matriz renderizable, y dado que las matrices renderizables se marcan como renderizadas cuando se renderizan, simplemente hacer dos referencias al mismo objeto hará que se renderice una, se marque como renderizada y luego se ignore la próxima vez.fuente