Вы здесь

Как в уже выполненном представлении заменить подкорректировать результаты ?

0

Добрый день.

Допустим, есть некий view.
Каким образом после его выполнения сделать там небольшую корректировку данных.
Например, заменить в в значении какого-то поля букву "а" на букву "б" ?

Смотрю в сторону хуков hook_views_pre_render и hook_views_post_render, но не могу понять, как добраться да результата и как его откорректировать.

Поделитесь, пожалуйста, опытом или киньте ссылки на примеры.

Версия Drupal: 
8.x
Связанные проекты: 
Views
Вопрос задан 21.05.2018 - 14:25

Ответы

0

Можно сделать свой форматер поля. 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
Аватар пользователя shu
shu
163

Согласен с форматтером.
+ Ещё можно добавить свой handler для обработки данных, данного поля.

Хуками можно, но крайне не красиво получится.

Комментарий оставлен 21.05.2018 - 16:50

Объясните, пожалуйста, как это сделать хуками ? "Некрасивость" перетерплю.

Комментарий оставлен 21.05.2018 - 17:23

Насколько я понимаю, тот пример для Drupal 7, а у меня вопрос по Drupal 8.
И кроме того, непонятно, как работать с полями Custom Text в этом случае.

Комментарий оставлен 21.05.2018 - 17:42

От того что я скинул пример на 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

Комментарий оставлен 21.05.2018 - 18:12

Насчет работы с кастомными полями - то, что они предлагают, это по сути, не решение проблемы. Это замена глобального поля каким-то своим плагином поля, а в пре- и пост-рендер хуках должна быть возможность изменить именно те значения, которые были в изначальных полях.

Комментарий оставлен 22.05.2018 - 07:40

Опишите подробнее, что в итоге хотите сделать и с чем. А то такое впечатление, что мы даём ответ не на тот вопрос и всё можно сделать намного проще.
От и до: что сделано руками, таким-то образом поле. В этом поле нужно заменить одна на другое, когда выводится туда-то. Выводится таким-то образом.

Комментарий оставлен 22.05.2018 - 08:51

Допустим, есть некий view и некий display
Там есть поле типа Custom Text (там есть поддержка токенов и twig) c названием nothing_1
Это поле что-то формирует.
Вот как отальтерить view, чтобы в этой строке что-то поменять на что-то, например.

P.S. Мне все-таки удалось решить это с помощью twig в этом поле, но хотелось бы понять, как это делается с помощью pre- и post_render хуков.
Ну вот не верю, что это никак нельзя сделать таким образом. Там уже, по идее, должна где-то храниться сформированная строка.

Комментарий оставлен 22.05.2018 - 10:03

Ну тогда внедрять хук в свой модуль и изучать массив, который передаётся в качестве аргумента. :)

Комментарий оставлен 27.05.2018 - 14:50