Оптимизируем Друпал: Видимость блоков

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

Определение новых регионов супер простое, нужно всего лишь добавить новую запись в .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 для более гибкого управления видимостью блоков.

Коментарів:

2

Коментувати

Увійдіть або зареєструйтесь, щоб додати коментар

Коментарі

меньше блоков - это лучше.
тут как решение - это хардить по стилям для одного блока или писать собственный модуль, который правда все равно будет обрабатываться на момент обработки при загрузке...
был вариант модуля, который бы позволял только сохранять переенные, но обработка которых была бы на уровне шаблона. дает меньше загрузки (простыми словами - вернуло 0 - не обработал вывод + обработку данных), но минус в том, что теряется идея разделения кода от шаблонов, и как итог - не читаемость кода (кусок там, кусок там)...
+ такие модули, как AD, например, - если не нужна статистика - вывод баннеров - хардом + как и остальные инфо блоки, которые включают простой статический текст.. да, лишает динамики, но дает прирост. мизерный, но с миру по нитке...

кстати.
update.
у вас есть несколько багов в верстке. если есть возможность, поставьте "ctrl + f12" (аналог службы отлова багов) - вышлю что где нашел..

спасибо за подсказанный модуль. буду пробовать.