Добрый день.
Допустим, есть некий view.
Каким образом после его выполнения сделать там небольшую корректировку данных.
Например, заменить в в значении какого-то поля букву "а" на букву "б" ?
Смотрю в сторону хуков hook_views_pre_render и hook_views_post_render, но не могу понять, как добраться да результата и как его откорректировать.
Поделитесь, пожалуйста, опытом или киньте ссылки на примеры.
Версия Drupal:
8.xСвязанные проекты:
Views
Вопрос задан 21.05.2018 - 14:25
Ответы
Можно сделать свой форматер поля. https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-fi...
А если хуками, то этот, вроде бы, лучше подходит: https://api.drupal.org/api/drupal/core!modules!views!views.api.php/funct...
Решение с хуком не проверял.
Ответ дан 21.05.2018 - 15:07
Согласен с форматтером.
+ Ещё можно добавить свой handler для обработки данных, данного поля.
Хуками можно, но крайне не красиво получится.
Объясните, пожалуйста, как это сделать хуками ? "Некрасивость" перетерплю.
https://stackoverflow.com/questions/26792238/drupal-hook-views-pre-rende...
Насколько я понимаю, тот пример для Drupal 7, а у меня вопрос по Drupal 8.
И кроме того, непонятно, как работать с полями Custom Text в этом случае.
От того что я скинул пример на d7, не значит что ровно такой же хук не используется в d8.
Как работать с ними ? ))
В pre_render придёт массив result который можно перебирать через foreach, после чего делать манипуляции. https://api.drupal.org/comment/62573#comment-62573
Вот тут описано как работают preprocess)
https://api.drupal.org/api/drupal/core%21modules%21views%21views.api.php... Preprocess D8
http://xandeadx.ru/blog/drupal/761 - Последовательность выполнения
UPD:
"И кроме того, непонятно, как работать с полями Custom Text в этом случае."
https://api.drupal.org/comment/62693#comment-62693
https://api.drupal.org/comment/62698#comment-62698
Насчет работы с кастомными полями - то, что они предлагают, это по сути, не решение проблемы. Это замена глобального поля каким-то своим плагином поля, а в пре- и пост-рендер хуках должна быть возможность изменить именно те значения, которые были в изначальных полях.
Опишите подробнее, что в итоге хотите сделать и с чем. А то такое впечатление, что мы даём ответ не на тот вопрос и всё можно сделать намного проще.
От и до: что сделано руками, таким-то образом поле. В этом поле нужно заменить одна на другое, когда выводится туда-то. Выводится таким-то образом.
Допустим, есть некий view и некий display
Там есть поле типа Custom Text (там есть поддержка токенов и twig) c названием nothing_1
Это поле что-то формирует.
Вот как отальтерить view, чтобы в этой строке что-то поменять на что-то, например.
P.S. Мне все-таки удалось решить это с помощью twig в этом поле, но хотелось бы понять, как это делается с помощью pre- и post_render хуков.
Ну вот не верю, что это никак нельзя сделать таким образом. Там уже, по идее, должна где-то храниться сформированная строка.
Ну тогда внедрять хук в свой модуль и изучать массив, который передаётся в качестве аргумента. :)