четверг, 17 июня 2010 г.

Проблема с кэшированием блоков в Drupal

Сегодня пытался решить проблему с одним блоком на сайте клиента. Суть проблемы в том, что есть форма и она не должна кэшироваться, то есть должна, но вместе со страницей.
В block api есть возможность отключить кэширование для отдельного блока посредством указания  
$block[$id]['cache'] = BLOCK_NO_CACHE

Проблема в том. что если с самого начала этот параметр отсуствовал, то изменения не запоминаются и блок все равно кэшируется.

Ситуацию можно спасти запустив SQL код:
UPDATE blocks SET cache = -1 WHERE module = 'your_module_name';

Если у модуля несколько блоков и только один требует отмены кэширования, то в запрос нужно добавить параметр delta