Cârligul de preprocesare a câmpului funcționează numai atunci când randați campul. Odată ce începeți să extrageți valori din obiectul câmpului (cum ar fi proprietăți individuale sau delte specifice), nu mai redați câmpul în sine, astfel nu declanșați cârligul.
De asemenea, nu recomand extragerea și randarea datelor în acest fel, deoarece pierzi unele metadate care vin cu aceste obiecte (de exemplu, capacitatea de stocare în cache, informații despre temă, informații despre formatator, modificări de la alte module etc.). Ai putea:
- Creați un formatator de câmpuri pentru acel tip de câmp și redați doar o anumită deltă (prin suprascriere
viewElements()
și doar adăugând delte specifice). Puteți face delta configurabilă.
- Sau o combinație de
hook_field_formatter_third_party_settings_form
și hook_preprocess_field
. Primul vă va permite să salvați configurația în configurația de afișare a câmpului, în timp ce cel de-al doilea vă permite să preluați acea configurație și să modificați rezultatul câmpului.
- Un bun exemplu al acestei combinații (deși folosit în alt scop) poate fi găsit în Garduri modul.
În ambele cazuri, puteți alege să le faceți configurabile prin intermediul admin și să nu codificați selecția delta în șablon. Puteți chiar să o faceți astfel încât să le ignorați pe ambele în întregime, lăsând câmpul să redă ieșirea implicită.