Pergunta

I have a module that supplies a block. The block is set to BLOCK_NO_CACHE, and its content is pulled from a function. It lets a site admin create a 'message' to display on the site, kind of like CNN, where a breaking update is displayed at the top, and a user can close it by hitting X. When they close it, the action is written and UUID written to their cookie so they don't see that message again.

I am getting reports from Boost users that when someone closes a message, it closes it for everyone. I assume this is because Boost is caching the page and serving a cached page after someone closed the message.

How can I make my module work for people using Boost?

I thought maybe hook_boot might work, but, then again I am not sure if there is a better way to address this.

Foi útil?

Solução

hook_boot will not do it. Once that page is in the cache no PHP is run. You need to have that block be loaded via AJAX because the state of that block is dependent upon a cookie. http://drupal.org/project/ajaxblocks and http://drupal.org/project/ajaxify_regions are 2 projects that easily do this.

Also it would be hard to get breaking updates out if the page is cached. You will have similar issues for varnish users as well.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top