У меня есть пользовательский модуль, который форматирует отображение поля изображения, которое может принимать несколько значений. Я хотел бы знать, какой хук я должен использовать, чтобы продублировать первое значение поля (например, «[image1]»), и добавить его обратно в начало массива ( array_unshift()
я полагаю), прежде чем остальные мои функции отформатируют отображение / тема поля.
Так что же было
- [Image1]
- [Image2]
- [Image3]
становится
- [Image1]
- [Image1]
- [Image2]
- [Image3]
Затем я собираюсь обсудить их отдельно, но думаю, что уже понял эту часть.
В настоящее время я использую hook_field_formatter_view()
, и попытался просто добавить его в начало $items
массива в верхней части функции, но это не сработало. Если бы я сразу массив после этого он показывает, но только 3 вещи получить выход; Я предполагаю, что количество полей определяется в другом месте.dprint_r()
$items
hook_field_formatter_view
но он запускается только один раз для каждого изображения.Ответы:
Вы хотите hook_field_formatter_prepare_view () вместо этого. Обратите внимание, что этот хук работает с группой объектов, а не с одним.
Вот рабочий фрагмент. Некоторый массив fu необходим для того, чтобы в итоге не написать уродливый цикл из десяти строк, поскольку дельты должны сохраняться линейными.
источник
hook_field_formatter_view()
где ваш код делает вывод, который показывается пользователю, и поэтому он хочет получить рендеринг массив в качестве возвращаемого значения. Так что просто обработайте первое изображение дважды и присвойте ему другой класс CSS или что-то в этом роде.Что-то вроде:
Так как
hook_field_formatter_view()
ожидает обновляемый массив, и так как визуализируемые массивы помечаются как визуализированные, когда они визуализируются, простое создание двух ссылок на один и тот же объект приведет к тому, что один будет отображен, помечен как визуализированный, а затем впоследствии проигнорирован в следующий раз.источник