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 т.е.): [php]
[/php] И все! Этот удобочитаемый элегантный код, который не разбросан по разным местам (в случае использования регионов нам пришлось бы править и tpl.php файлы, и .info темы), который легко расширить/изменить при необходимости. Что делает эта волшебная строчка? [php] [/php] Она выводит представление views с машинным именем "news" (вы сами его назначаете при создании нового представления views), а конкретней - первый блок в этом представлении. Если в представлении views у вас несколько блоков - смотрите по их ID - следующие будут block_2, block_3 и т.п. Подробнее об этой замечательной функции вы можете прочитать на drupalcontrib p.s. А еще скоро появятся возможность комментировать. Пока же вы можете подписаться на данный блог через RSS

Партнерская программа

Кстати, для интересующихся технологиями, у нас есть партнерская программа. Если по вашей специализации:

  • вы работате над другими задачами (не создание типовых сайтов),
  • вы работаете с высокобюджетными сайтами,
  • вам хочется ковертировать обращения по вопросам "помогите с созданием сайта-визитки" в прибыль.

Тогда, добро пожаловать в партнерку :)