ShvetsGroup

 

Добавить комментарий

Sinkora
2 декабря, 2009

Проблема возникла при отключении модуля. У него есть такой хук:

function bpv_disable() {
$sql = "UPDATE blocks SET pages = '' WHERE status=1 AND theme='%s'";
db_query($sql, variable_get('theme_default', 'garland'));
variable_del('bpv_default');
}

После чего в таблице {blocks} значения полей pages были удалены этим модулем. Пришлось вручную восстанавливать эти данные.

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

Так что нужно осторожно пользоваться модулем "Block Page Visibility" (обязательно нужно прочитать README.txt перед использованием:)).

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

Т.е., как я понимаю, мы можем сделать, например, такое:

function hook_block($op='list', $delta=0, $edit=array()) {
switch ($op) {
case 'list':
$block[0]['weight'] = 1;
$block[0]['pages'] = 'blog/*';
return $blocks;
}
}

Но мы не можем в этом хуке сделать так, чтобы, например, на страницах 'blog/*' вес данного блока был равен 1, а на странице 'forum/*' имел другое значение (например, равное 2)... Возможно, скорее всего, есть разумные решения такой задачи, но только пока еще я не думал особо над этим...