hook_views_query_alter

Главные вкладки

Аватар пользователя noobishe noobishe 13 июня 2018 в 8:56

Здрасти.
В D8 судя по комментам hook_views_query_alter нужно сувать в _____.views_execution.inc, но при включенном кеше эта штука срабатывает однократно, даже если выключить кеш самой въюшки.
Что нужно сделать чтоб это работало всегда?

Лучший ответ

Аватар пользователя gun_dose gun_dose 14 июня 2018 в 10:00
1

Обычно отключения кэша вьюса достаточно. С другой стороны, если у вас условия могут меняться, то разумнее будет использовать раскрытые фильтры. Просто не выводить их, а выставлять программно в hook_views_pre_view например. В таком случае, при изменении фильтров кэш не будет использоваться.

Комментарии

Аватар пользователя noobishe noobishe 13 июня 2018 в 18:59

hook_views_query_alter - тут написано что не в модуль писать нужно.
А если все же написать, то срабатывает только после очистки кеша, а если в my_module.views_execution.inc при отключенном кешированиии(которое в производительности) срабатывает как нужно.
по всей видимости я не в ту сторону копаю, и кешируется у меня тема, а не вивес..

Аватар пользователя gun_dose gun_dose 13 июня 2018 в 20:58

Зря вы читали эти комменты. Вот я не читал, всунул хук в модуль и всё работает. Причём неоднократно. При объявлении нового хука всегда надо сбрасывать кэш. Далее хук будет отрабатывать по необходимости. Естественно, если вьюс закэширован, то данный хук не вызовется, т.к. запрос не выполняется. Это нормальное поведение, т.к. во время вызова хука запрос был изменён, и закэширован был результат изменённого запроса.

Если же вам так нужно, чтобы хук срабатывал при каждом вызове вьюса, то мне кажется, что у вас изначально неверная постановка задачи. Что вам вообще нужно сделать? Почему решили использовать этот хук?

Аватар пользователя noobishe noobishe 13 июня 2018 в 22:51

да, мне нужно чтоб срабатывало при каждом вызове! необходимо добавить кондишены в запрос, что то типа глобального фильтра..

Аватар пользователя gun_dose gun_dose 14 июня 2018 в 6:40

Ну так а что вас не устраивает? Сработал хук один раз после сброса кэша, закэшировался изменённый результат и всё, больше смысла нет выполнять запрос, пока данные не изменятся.

Аватар пользователя noobishe noobishe 14 июня 2018 в 8:10

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

Аватар пользователя gun_dose gun_dose 14 июня 2018 в 10:00
1

Обычно отключения кэша вьюса достаточно. С другой стороны, если у вас условия могут меняться, то разумнее будет использовать раскрытые фильтры. Просто не выводить их, а выставлять программно в hook_views_pre_view например. В таком случае, при изменении фильтров кэш не будет использоваться.