Am un tip de paragraf cu un câmp de referință al nodului care, dacă îl lăsați gol, ar trebui să arate un nod aleatoriu folosind o logică definită.
Am codul pentru a face interogarea și a obține nodul și, în mod ideal, aș dori să-l pun pe obiectul paragraf într-un cârlig de pre-rendare, astfel încât paragraful să poată reda normal folosind configurația sa obișnuită. Ceva de genul acesta (avertisment: pseudo-codish):
funcția mymodule_paragraph_view($build, $paragraph, $display, $view_mode) {
if (!este_tipul_meu_paragraf($paragraf)) return;
if (!$paragraph->field_mynoderef->isEmpty()) return;
$nod = getRandomNode();
$paragraf->set('field_mynoderef', $node);
}
Aceasta setează corect valoarea, dar se pare că este prea târziu în procesul de randare pentru ca acesta să afecteze ieșirea redată (adică nu arată de fapt nodul). Am încercat să fac asta și pe $build['#paragraf']
obiect, care conține același paragraf, cu rezultate similare. Cum pot face asta să funcționeze?
BONUS: Cum se face astfel încât să memoreze în cache ieșirea folosind o configurație bazată pe timp (de exemplu, expiră după 60 de secunde, astfel încât în fiecare minut va afișa un nod diferit și nu va rula logica de interogare la fiecare solicitare).