J'ai un module personnalisé qui met en forme l'affichage d'un champ d'image, qui peut accepter plusieurs valeurs. Je voudrais savoir quel hook je dois utiliser pour dupliquer la première valeur du champ (par exemple "[image1]"), et l'ajouter au début du tableau (avec array_unshift()
je suppose) avant que le reste de mes fonctions formate le affichage / thème du terrain.
Alors, quel était
- [image1]
- [image2]
- [image3]
devient
- [image1]
- [image1]
- [image2]
- [image3]
Je vais ensuite les thème séparément, mais je pense que j'ai déjà compris cette partie.
J'utilise actuellement hook_field_formatter_view()
, et j'ai essayé de l'ajouter au début du $items
tableau en haut de la fonction, mais cela ne semble pas fonctionner. Si j'ai immédiatement dprint_r()
le $items
tableau après cela, il montre, mais seulement 3 éléments obtiennent une sortie; Je suppose que le nombre de champs est déterminé ailleurs.
hook_field_formatter_view
mais ça ne fonctionne qu'une fois par image.Réponses:
Vous voulez plutôt hook_field_formatter_prepare_view () . Notez que ce hook fonctionne sur un groupe d'entités, pas sur une seule.
Voici un extrait de travail. Un tableau-fu est nécessaire pour ne pas finir par écrire une boucle laide de dix lignes, car les deltas doivent être conservés linéairement.
la source
hook_field_formatter_view()
est l'endroit où votre code fait la sortie qui est montrée à l'utilisateur, et donc il veut un tableau pouvant être rendu comme valeur de retour. Il suffit donc de traiter la première image deux fois et de lui donner une classe CSS différente ou quelque chose.Quelque chose comme:
Étant donné qu'il
hook_field_formatter_view()
attend un tableau pouvant être rendu et que les tableaux pouvant être rendus sont marqués comme rendus lorsqu'ils sont rendus, le simple fait de faire deux références au même objet entraînera le rendu d'une, la marque comme rendu, puis sera ignorée la prochaine fois.la source