Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Panels как философия
Или как стоит использовать модуль Panelizer
Александр Даниленко
Глоссарий
● Сайтбилдер — Drupal разработчик, собирающий проект из готовых
модулей и не желающий или не умеющий писать свои...
WTF?
Возможность
использования
панелей для вывода
любых сущностей и
любого их типа
представления (view
mode)
Теперь вы мож...
Немного теории.
Как Drupal видит страницу?
● Блоки не зависят от контента
(нет понятия контекста)
● Блок можно отобразить
...
CONTENT
Немного теории.
Как дизайнеры видят страницу?
● Вся страница является
цельным отображением
контента, где любой эле...
Немного теории.
Как Я вижу страницу?
● Вверху - основные
элементы шапки,
одинаковые для всех
страниц. Например:
логотип, н...
Вывод
Зачем? Мне и так не плохо
Больше возможностей при
редактировании контента
● Вся мощь панелей:
○ Вставка всего чего угодно ...
Пример сложной
задачи
Контент содержит элементы,
которые необходимо растянуть на
100% по ширине текущего экрана.
В обычной...
Пример сложной
задачи
Контент содержит элементы,
которые необходимо растянуть на
100% по ширине текущего экрана.
В обычной...
Когда использование Panelizer
оправдано?
● Когда мы — сайтбилдер.
● Когда мы не хотим создавать кучу шаблонов для разных
п...
Когда ещё?
● У Panelizer отличная интеграция с модулем Features - экспортирует
лейауты и настройки вывода для определенных...
Panelizer - панацея от всех бед
везде и всегда?
Нет
Когда использование Panelizer не
оправдано?
● Когда мы делаем проект с маленьким бюджетом и морока с панелями
не оплачивае...
Как всё таки всё это сделать?
Прототипизирование
● Нудный процесс рисования прототипов
(мокапов, скетчей, и т.д.)
● Для че...
Правки в теме
● Убираем ширину у страницы и региона с контентом
○ Легче всего использовать сетку
● Убираем в теме регионы ...
Создание полей со ссылками
● Добавляем несколько block-reference полей
CONTENT (THEME’S REGION)
field_before_content
field...
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Результат
Создание своего лейаута
● Изменяем *.info файл
○ plugins[panels][layouts] = panels/layouts
● Создаём файлы:
○ THEME / pane...
Создание своего лейаута
layout_1.inc
Создание своего лейаута
layout_1.inc
Результат
Ссылки
● Курс по Panels + Panelizer от Drupalize.me
● Дистрибутив Drupal, придерживающийся идеи
“панели везде”: https://dr...
So long, and thanks for all the fish
RTFM
Александр Даниленко
Upcoming SlideShare
Loading in …5
×

Panels как философия - Alexander Danilenko

450 views

Published on

Drupal не был бы столь популярной CMS без мощи таких модулей, как Views и Panels. Использование последнего будет рассмотрено со всех сторон, будут рассказаны лучшие практики использования, а так же практические примеры. Расскажу о принципе построения проектов, к которому со временем пришёл и который стал для меня универсальной основой для построения практически любого функционала на Drupal.

Published in: Internet
  • Be the first to comment

Panels как философия - Alexander Danilenko

  1. 1. Panels как философия Или как стоит использовать модуль Panelizer Александр Даниленко
  2. 2. Глоссарий ● Сайтбилдер — Drupal разработчик, собирающий проект из готовых модулей и не желающий или не умеющий писать свои модули. ● Entity (cущность) — всё, что можно расширить полями и показывать как контент. ● Panel layout (лейаут) — шаблон, при помощи которого выводится определенный контент. ● Layout region (регион) — место для контента, который выводится внутри шаблона. ● Ctools Content type (CCT) — Контент, который передаётся в регион лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный CCT и т.д. ● Panelizer default panel — расположение определенных CCT в регионах. ● View mode (тип представления) — способ показа сущности. Например: Анонс, Полный контент, и т.д.
  3. 3. WTF? Возможность использования панелей для вывода любых сущностей и любого их типа представления (view mode) Теперь вы можете темизировать панели в то время, когда вы темизируете панели. Наркомания Drupal-way.
  4. 4. Немного теории. Как Drupal видит страницу? ● Блоки не зависят от контента (нет понятия контекста) ● Блок можно отобразить только в одном регионе ● Чтобы реализовать логику показа/скрытия блоков — нужно писать PHP код в админке. ● PHP код в админке — это всегда пичалька. Не делайте так никогда. Вообще. HEADER FOOTER SIDEBAR LEFT SIDEBAR RIGHT CONTENT
  5. 5. CONTENT Немного теории. Как дизайнеры видят страницу? ● Вся страница является цельным отображением контента, где любой элемент может зависеть от показываемой страницы (от котнекста показа). ● Контекстом для показа может быть текущий пользователь, текущий язык, значение полей текущей сущности, значение поля связанного с текущей сущностью и т.д. ● Даже вьюшки.
  6. 6. Немного теории. Как Я вижу страницу? ● Вверху - основные элементы шапки, одинаковые для всех страниц. Например: логотип, название сайта, слоган. ● Контент - панель с некоторым количеством регионов. ● Футер - копирайты. BRANDING COPYRIGHT CONTENT
  7. 7. Вывод
  8. 8. Зачем? Мне и так не плохо Больше возможностей при редактировании контента ● Вся мощь панелей: ○ Вставка всего чего угодно и куда угодно (блоки, кастомный текст, вьюшки, элементы страницы (сайтнейм, бредкрамбы, лого, слоган и т.д.). Проще говоря — всё то, что можно вставить в любую панель + поля из вашей сущности. ○ Можно создать уникальный лейаут, практически не прибегая к коду (Flexible). ○ Добавление классов к полям через админку (удобно когда используем сетку или CSS фреймворк) ○ In-pace editng ● Переопределение настроек только для одной сущности.
  9. 9. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не есть оптимизация возможностей.
  10. 10. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не есть оптимизация возможностей.
  11. 11. Когда использование Panelizer оправдано? ● Когда мы — сайтбилдер. ● Когда мы не хотим создавать кучу шаблонов для разных представлений контента. ● Когда у нас проект типа: ○ Набор Landing страниц ○ Проект с минимумом логики и максимумом разнообразного контента ● Когда мы разрабатываем тему с нуля (кастомная тема). ● Когда тип материала с одним набором полей необходимо представлять в нескольких вариациях (цеплять разные лейауты для определенных нод одного и того же типа) с возможностью выбора на каждой ноде собственного лейаута. ● Когда используем CSS фреймворк ○ Можно и без сетки, но придётся писать много стилей, вместо обычного добавления классов элементам.
  12. 12. Когда ещё? ● У Panelizer отличная интеграция с модулем Features - экспортирует лейауты и настройки вывода для определенных типов сущностей. ● Если мы разрабатываем проекты по методологии повторного использования кода. ● Если делаем собственный дистрибутив, установочный профиль или фичу, которую будем использовать на нескольких проектах. ● Если делаем тему на продажу. На выходе получаем кучу кастомизабельности сайта при минимуме движений по изменению представления контента.
  13. 13. Panelizer - панацея от всех бед везде и всегда? Нет
  14. 14. Когда использование Panelizer не оправдано? ● Когда мы делаем проект с маленьким бюджетом и морока с панелями не оплачивается. ● Когда расширяемость проекта совершенно не важна. ● Когда контент вне региона с контентом никак не связан с основным контентом. ● Когда не хотим писать свою тему, а используем какую нибудь базовую (Zen, Omega, Adaptivetheme, etc.)
  15. 15. Как всё таки всё это сделать? Прототипизирование ● Нудный процесс рисования прототипов (мокапов, скетчей, и т.д.) ● Для чего: ○ Чтобы охватить как можно более оптимальное количество элементов, которые должны быть внутри главной панели с контентом.
  16. 16. Правки в теме ● Убираем ширину у страницы и региона с контентом ○ Легче всего использовать сетку ● Убираем в теме регионы с сайдбарами
  17. 17. Создание полей со ссылками ● Добавляем несколько block-reference полей CONTENT (THEME’S REGION) field_before_content field_body field_sidebar_2 field_after_content field_sidebar_1
  18. 18. Настройка Panelizer
  19. 19. Настройка Panelizer
  20. 20. Настройка Panelizer
  21. 21. Настройка Panelizer
  22. 22. Настройка Panelizer
  23. 23. Настройка Panelizer
  24. 24. Настройка Panelizer
  25. 25. Настройка Panelizer
  26. 26. Результат
  27. 27. Создание своего лейаута ● Изменяем *.info файл ○ plugins[panels][layouts] = panels/layouts ● Создаём файлы: ○ THEME / panels / layouts / layout_1/ layout_1.inc ○ THEME / panels / layouts / layout_1/ layout_1.css ○ THEME / panels / layouts / layout_1 / layout_1.png ○ THEME / panels / layouts / layout_1 / layout_1.tpl.php ● Чистим кеши
  28. 28. Создание своего лейаута layout_1.inc
  29. 29. Создание своего лейаута layout_1.inc
  30. 30. Результат
  31. 31. Ссылки ● Курс по Panels + Panelizer от Drupalize.me ● Дистрибутив Drupal, придерживающийся идеи “панели везде”: https://drupal.org/project/panopoly ● Куча готовых лейаутов: https://drupal.org/sandbox/apmsooner/1805170 ● Ещё больше лейаутов: https://drupal.org/project/panels_extra_layouts
  32. 32. So long, and thanks for all the fish RTFM Александр Даниленко

×