кэширование блока и access restriction

Главные вкладки

Аватар пользователя alex_ku alex_ku 23 декабря 2008 в 19:39

привет всем!
натолкнулся на такой проблем:

в модуле ulisting есть блок, который показывает пару-тройку коротких анонсов для размещения в левой или правой колонке.
так вот.
проблема в том, что drupal его кэширует. причем кэширует для всех кроме админа (uid 1).
более того, при кэшировании пропадает файл со стилями (он просто не включается в список).
вопрос - как запретить кэширование этого конкретного блока ?
попробовал такой финт:

function ulisting_block($op = 'list', $delta=0, $edit = array()){
        switch($op){
                case 'list':
                        $blocks[0]['info'] = t('Featured Listing');            
                        $blocks[0]['cache'] = BLOCK_NO_CACHE;

безрезультатно.
в настройках производительности сайта написано:
«Note that block caching is inactive when modules defining content access restrictions are enabled.»
однако как и где задать уровень доступа к блоку - не могу найти....
пробовал менять в настройках блока:
Role specific visibility settings
Show block for specific roles: - безрезультатно.

help please!
PS: в резальтате манипуляций с настроками CSS теперь не пропадает, но содержимое всегда одно и тоже.

Комментарии

Аватар пользователя alex_ku alex_ku 25 декабря 2008 в 19:00

чтож, отвечаю на свой вопрос сам.
самый простой способ:
update {blocks} set cache = -1 where module = 'ulisting';

после анализа кода, установил последовательность через гуи:

  1. отключить модуль(ли) в /admin/build/modules
  2. исправить в исходниках hook_block - $blocks[0]['cache'] = BLOCK_NO_CACHE;
  3. перейти в /admin/build/block
  4. включить модуль
  5. перейти в /admin/build/block и настроить положение блока

вместо отключения/включения модуля можно просто заремарить/разремарить хук hook_block.