Mam niestandardowy moduł, który formatuje wyświetlanie pola obrazu, który może przyjmować wiele wartości. Chciałbym wiedzieć, jakiego haka powinienem użyć, aby zduplikować pierwszą wartość pola (np. „[Image1]”) i dodać ją z powrotem na początku tablicy (tak array_unshift()
mi się wydaje ), zanim pozostałe funkcje sformatują właściwość wyświetlacz / motyw pola.
Więc co było
- [image1]
- [image2]
- [image3]
staje się
- [image1]
- [image1]
- [image2]
- [image3]
Następnie omówię je osobno, ale myślę, że już to zrozumiałem.
Obecnie używam hook_field_formatter_view()
i próbowałem po prostu dodać go na początku $items
tablicy u góry funkcji, ale to nie działało. Jeśli od razu tablica po tym to widać, ale tylko 3 egzemplarze dostać wyjście; Zakładam, że liczba pól zostanie ustalona gdzie indziej.dprint_r()
$items
hook_field_formatter_view
ale działa to tylko raz na obraz.Odpowiedzi:
Zamiast tego chcesz hook_field_formatter_prepare_view () . Zauważ, że ten haczyk działa na grupie bytów, a nie na jednym.
Oto działający fragment kodu. Potrzebna jest pewna tablica-fu, aby nie napisać brzydkiej pętli dziesięciu linii, ponieważ delty muszą być zachowane liniowo.
źródło
hook_field_formatter_view()
jest miejscem, w którym kod tworzy wynik, który jest pokazywany użytkownikowi, więc chce tablicy renderowalnej jako wartości zwracanej. Więc po prostu przetworz pierwszy obraz dwa razy i nadaj mu inną klasę css lub coś takiego.Coś jak:
Ponieważ
hook_field_formatter_view()
oczekuje tablicy do renderowania, a ponieważ tablice do renderowania są oznaczane jako renderowane podczas renderowania, po prostu utworzenie dwóch odwołań do tego samego obiektu spowoduje, że jeden zostanie renderowany, oznaczony jako renderowany, a następnie zignorowany następnym razem.źródło