Чтение / запись данных с блоками на Boost-кэшированных страницах

У меня есть модуль, который поставляет блок. Блок имеет значение BLOCK_NO_CACHE, а его содержимое извлекается из функции. Это позволяет администратору сайта создать "сообщение" для отображения на сайте, вроде CNN, где в верхней части отображается последнее обновление, а пользователь может закрыть его, нажав X. Когда они закрывают его, действие записывается и UUID записывается в их cookie, чтобы они больше не видели это сообщение.

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

Как я могу заставить мой модуль работать для людей, использующих Boost?

Я подумал, что hook_boot может сработать, но, опять же, я не уверен, что есть лучший способ решить эту проблему.

1 ответ

Решение

hook_boot не будет этого делать. Когда эта страница находится в кеше, PHP не запускается. Вам необходимо загрузить этот блок через AJAX, поскольку состояние этого блока зависит от файла cookie. http://drupal.org/project/ajaxblocks и http://drupal.org/project/ajaxify_regions- это два проекта, которые легко это делают.

Также было бы трудно получить последние обновления, если страница кэшируется. У вас будут похожие проблемы и с пользователями лака.

Другие вопросы по тегам