У меня есть тип абзаца с полем ссылки на узел, которое, если вы оставите его пустым, должно отображать случайный узел с использованием определенной логики.
У меня есть код для выполнения запроса и получения узла, и в идеале я хотел бы поместить его в объект абзаца в какой-то хук перед рендерингом, чтобы абзац мог нормально отображаться, используя его обычную конфигурацию. Что-то вроде этого (предупреждение: псевдокод):
функция mymodule_paragraph_view($build, $paragraph, $display, $view_mode) {
если (!is_my_paragraph_type($paragraph)) вернуть;
если (!$paragraph->field_mynoderef->isEmpty()) return;
$узел = getRandomNode();
$paragraph->set('field_mynoderef', $node);
}
Это правильная установка значения, но кажется, что в процессе рендеринга уже слишком поздно, чтобы он мог повлиять на визуализированный вывод (т. Е. На самом деле он не показывает узел). Я также пытался сделать это на $сборка['#абзац']
объект, содержащий тот же абзац, с аналогичными результатами. Как я могу заставить это работать?
БОНУС: как сделать так, чтобы вывод кэшировался с использованием конфигурации, основанной на времени (например, истечение срока действия через 60 секунд, чтобы каждую минуту он показывал другой узел и не запускал логику запроса при каждом запросе).