Здрасти.
В D8 судя по комментам hook_views_query_alter нужно сувать в _____.views_execution.inc, но при включенном кеше эта штука срабатывает однократно, даже если выключить кеш самой въюшки.
Что нужно сделать чтоб это работало всегда?
hook_views_query_alter
Главные вкладки
Лучший ответ
1
Обычно отключения кэша вьюса достаточно. С другой стороны, если у вас условия могут меняться, то разумнее будет использовать раскрытые фильтры. Просто не выводить их, а выставлять программно в hook_views_pre_view например. В таком случае, при изменении фильтров кэш не будет использоваться.
Комментарии
А почему в module не всунули?
Поместить в myModule.module
hook_views_query_alter - тут написано что не в модуль писать нужно.
А если все же написать, то срабатывает только после очистки кеша, а если в my_module.views_execution.inc при отключенном кешированиии(которое в производительности) срабатывает как нужно.
по всей видимости я не в ту сторону копаю, и кешируется у меня тема, а не вивес..
Зря вы читали эти комменты. Вот я не читал, всунул хук в модуль и всё работает. Причём неоднократно. При объявлении нового хука всегда надо сбрасывать кэш. Далее хук будет отрабатывать по необходимости. Естественно, если вьюс закэширован, то данный хук не вызовется, т.к. запрос не выполняется. Это нормальное поведение, т.к. во время вызова хука запрос был изменён, и закэширован был результат изменённого запроса.
Если же вам так нужно, чтобы хук срабатывал при каждом вызове вьюса, то мне кажется, что у вас изначально неверная постановка задачи. Что вам вообще нужно сделать? Почему решили использовать этот хук?
да, мне нужно чтоб срабатывало при каждом вызове! необходимо добавить кондишены в запрос, что то типа глобального фильтра..
Ну так а что вас не устраивает? Сработал хук один раз после сброса кэша, закэшировался изменённый результат и всё, больше смысла нет выполнять запрос, пока данные не изменятся.
Не устраивает то, что кондишены могут меняться, а вывод остаётся закэшированый.. может я не тот хук использую?
Обычно отключения кэша вьюса достаточно. С другой стороны, если у вас условия могут меняться, то разумнее будет использовать раскрытые фильтры. Просто не выводить их, а выставлять программно в hook_views_pre_view например. В таком случае, при изменении фильтров кэш не будет использоваться.
Спасибо! Сработало!