Lifehack для блоков

Небольшое наблюдение по поводу практики верстки сайтов на drupal. Я все чаще и чаще использую данный метод. Но сначала - небольшое вступление.

Допустим: мы хотим на главной странице нашего сайта выводить "все что появилось нового". К примеру:

  1. Последние 10 новостей
  2. Последние 10 статей
  3. Последние фотографии
  4. Какое-либо "предложение дня"

И для всего этого отлично подходит views - удобно сделать списки, удобно фильтровать, отличное кэширование - в общем, все что угодно. И тут перед многими встает вопрос: "А как это все сверстать?".

Если обобщить, у нас есть несколько вариантов:

  1. Panels
  2. Регионы на сайте через tpl.php файлы или через inline-регионы
  3. Использование grid-фреймворков и views-embed

Ради последнего варианта и затевается данная статья.

Panels

Лично я ни разу в рабочем проекте не использовал panels. Знаком с ним, конечно, меня вело любопытство - "каждый друпал-специалист должен знать......и Panels тоже". Но html-вывод panels меня как верстальщика несколько отпугивает - я представляю сколько кода у меня в итоге будет в сложном проекте, и мне не хочется даже начинать идти этим путем (хотя, говорят, есть способы.... :)

Регионы на сайте через tpl.php + вывод в них views блоков

Способ хорош. Но имеет свои недостатки. А именно:

  1. В результате у вас получится либо множество tpl.файлов, либо множество проверок в php на уровне "а где я нахожусь, а как выводить блоки" и т.п.
  2. Это все равно грузит вывод. Александр Швец хорошо написал об этом в своем блоге, а именно: Даже если вы не выводите регион в шаблоне, он все-равно рендерится при подготовке страницы, так как друпал не может знать заранее, выведете ли вы регион на страницу или нет. Посему, в худшем случае, загрузка рядовых страниц у вас будет настолько же тяжела, как и загрузка главной страницы. (с)

Вообще это классический метод проектирования сайтов, когда количество информационных "блоков/колонок" невелико и известно изначально. Я вообще сторонник регионов в шаблоне. Но в последнее время удобным часто нахожу и следующий способ.

960gs + views embed

Оказывается это безумно удобно! Использование 960gs фреймворка и такого функционала views как views embed делает создание 3х колонок с новостями/галереей/комментариями безумно простым.

Я просто создаю ноду с данным кодом (допустим, у меня под область контента отдано 12 колонок сетки, grid-12 т.е.):

   <div class="grid-4 alpha">
       <?php print views_embed_view('news', 'block_1'); ?>
   </div>
 
   <div class="grid-4">
       <?php print views_embed_view('gallery', 'block_1'); ?>
   </div>
 
   <div class="grid-4 omega">
        <?php print views_embed_view('comment', 'block_1'); ?>
   </div>

И все! Этот удобочитаемый элегантный код, который не разбросан по разным местам (в случае использования регионов нам пришлось бы править и tpl.php файлы, и .info темы), который легко расширить/изменить при необходимости.

Что делает эта волшебная строчка?

<?php print views_embed_view('news', 'block_1'); ?>

Она выводит представление views с машинным именем "news" (вы сами его назначаете при создании нового представления views), а конкретней - первый блок в этом представлении. Если в представлении views у вас несколько блоков - смотрите по их ID - следующие будут block_2, block_3 и т.п. Подробнее об этой замечательной функции вы можете прочитать на drupalcontrib

p.s. А еще скоро появятся возможность комментировать. Пока же вы можете подписаться на данный блог через RSS

Об авторе

Дубовской Александр

руководитель проектов

+7 928 77 00 850
Email/Jabber: dan@ra-don.ru
Skype: alexander.dubovskoy

Могу сразу предупредить - то что из этого блога попадает на главную страницу - стоит внимания широкого круга читателей. Все остальное в блоге возможно покажется вам слишком узкоспециализированным или ненужным в "бытовом" управлении сайтом.

Я длительное время занимаюсь изучением CMS Drupal, с удовольствием "бываю в гостях" на конференциях по данной системе управления сайтами. Блог - во многом средство продолжения профессионального общения с теми людьми, с кем я начал общаться на данных мероприятиях. И конечно - способ "заметок для себя" по отдельным техническим вопросам.

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