Оптимизация видимости блоков в Drupal 6

Аватар пользователя artur.baranok
Опубликовано вт, 07/14/2015 - 13:00 пользователем artur.baranok
Форумы: 

Для больших друпаловских сайтов обычная вещь иметь большое количество регионов для блоков. Разные регионы для разных разделов тоже частая практика. В общем случае, вы имеете шаблон главной страницы (page-front.tpl.php), где вы водите большую часть разнообразных регионов, и шаблон рядовых страниц, где количество регионов не так велико (page.tpl.php):

Расположение блоков шаблона Drupal 6

Определение новых регионов супер простое, нужно всего лишь добавить новую запись в .info файл вашей темы:

regions[ad_top] = Ad Top
regions[ad_bottom] = Ad Bottom
regions[front_sidebar] = Front Sidebar
regions[sidebar_ad] = Sidebar Ad
regions[content] = Content
regions[feature_a] = Feature A
regions[feature_b] = Feature B
regions[feature_c] = Feature C
regions[feature_d] = Feature D

А затем «отпечатать» регион в нужном месте шаблона таким вот кодом:

<?php
print $feature_a;
?>

Не хотите показывать регион "Feature A" в page.tpl.php? Нет проблем! Просто не выводите регион в шаблоне! Вот... Правильно?

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

Решением проблем является явное ограничение видимости блоков для конкретных путей сайта, либо ограничение показа для определенных ролей. Кроме того, полезным будет применение модуля Block Page Visibility для более гибкого управления видимостью блоков.

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.