Я использую следующее, чтобы очистить конкретный кеш для просмотра на node_presave
который работает нормально.
cache_clear_all($view_name.':'.$display_name, 'cache_views_data', ИСТИНА);
В настоящее время он удаляет все представления, созданные для всех контекстных фильтров (идентификатор термина таксономии). Я хочу иметь возможность удалить только представление для одного идентификатора термина таксономии.
Например, если узел a с прилив:46
добавлен,
Что случилось:
Все кеши следующих представлений очищаются (удаляются из cache_views_data Таблица).
статей/45
статей/46
статей/47
Что я хочу, чтобы произошло:
удалить кеш представления только для статей/46
.
Итак, чтобы добиться этого, я начал копаться в таблицах (в основном cache_views_data), чтобы выяснить шаблон CID.
К каждому CID добавляется строка, похожая на UUID.
Что я знаю до сих пор, так это то, что эта строка кажется одинаковой для определенного представления. Например, для просмотра статей/46
, каждый раз одно и то же. Я несколько раз пробовал очищать кеш и генерировать его снова и снова.
Я считаю, что если я знаю правильную строку для каждого представления, я могу очистить кеши конкретно.
Итак, мой вопрос: выполнимо ли то, чего я пытаюсь достичь? Изменяется ли строка в зависимости от какого-то неизвестного фактора? Если нет, то является ли он последовательным и надежным? Если да, то как я могу узнать, как и где это генерируется?
Я предполагаю, что модуль просмотров
использует модуль ctools
для этого, но я не знаю, как именно.