SlideShare a Scribd company logo
Panels как философия
Или как стоит использовать модуль Panelizer
Александр Даниленко
Глоссарий
● Сайтбилдер — Drupal разработчик, собирающий проект из готовых
модулей и не желающий или не умеющий писать свои модули.
● Entity (cущность) — всё, что можно расширить полями и показывать
как контент.
● Panel layout (лейаут) — шаблон, при помощи которого выводится
определенный контент.
● Layout region (регион) — место для контента, который выводится
внутри шаблона.
● Ctools Content type (CCT) — Контент, который передаётся в регион
лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный
CCT и т.д.
● Panelizer default panel — расположение определенных CCT в
регионах.
● View mode (тип представления) — способ показа сущности.
Например: Анонс, Полный контент, и т.д.
WTF?
Возможность
использования
панелей для вывода
любых сущностей и
любого их типа
представления (view
mode)
Теперь вы можете темизировать панели в то время,
когда вы темизируете панели. Наркомания Drupal-way.
Немного теории.
Как Drupal видит страницу?
● Блоки не зависят от контента
(нет понятия контекста)
● Блок можно отобразить
только в одном регионе
● Чтобы реализовать логику
показа/скрытия блоков —
нужно писать PHP код в
админке.
● PHP код в админке — это
всегда пичалька. Не делайте
так никогда. Вообще.
HEADER
FOOTER
SIDEBAR
LEFT
SIDEBAR
RIGHT
CONTENT
CONTENT
Немного теории.
Как дизайнеры видят страницу?
● Вся страница является
цельным отображением
контента, где любой элемент
может зависеть от
показываемой страницы (от
котнекста показа).
● Контекстом для показа
может быть текущий
пользователь, текущий язык,
значение полей текущей
сущности, значение поля
связанного с текущей
сущностью и т.д.
● Даже вьюшки.
Немного теории.
Как Я вижу страницу?
● Вверху - основные
элементы шапки,
одинаковые для всех
страниц. Например:
логотип, название
сайта, слоган.
● Контент - панель с
некоторым количеством
регионов.
● Футер - копирайты.
BRANDING
COPYRIGHT
CONTENT
Вывод
Зачем? Мне и так не плохо
Больше возможностей при
редактировании контента
● Вся мощь панелей:
○ Вставка всего чего угодно и куда угодно (блоки,
кастомный текст, вьюшки, элементы страницы
(сайтнейм, бредкрамбы, лого, слоган и т.д.).
Проще говоря — всё то, что можно вставить в
любую панель + поля из вашей сущности.
○ Можно создать уникальный лейаут,
практически не прибегая к коду (Flexible).
○ Добавление классов к полям через админку
(удобно когда используем сетку или CSS
фреймворк)
○ In-pace editng
● Переопределение настроек только для одной
сущности.
Пример сложной
задачи
Контент содержит элементы,
которые необходимо растянуть на
100% по ширине текущего экрана.
В обычной ситуации - регион с
контентом фиксируется по ширине
и без костылей в подобном случае
не обойтись.
Можно наделать новых регионов в
теме, но использовать их только
один раз на одной странице. Что
не есть оптимизация
возможностей.
Пример сложной
задачи
Контент содержит элементы,
которые необходимо растянуть на
100% по ширине текущего экрана.
В обычной ситуации - регион с
контентом фиксируется по ширине
и без костылей в подобном случае
не обойтись.
Можно наделать новых регионов в
теме, но использовать их только
один раз на одной странице. Что
не есть оптимизация
возможностей.
Когда использование Panelizer
оправдано?
● Когда мы — сайтбилдер.
● Когда мы не хотим создавать кучу шаблонов для разных
представлений контента.
● Когда у нас проект типа:
○ Набор Landing страниц
○ Проект с минимумом логики и максимумом разнообразного
контента
● Когда мы разрабатываем тему с нуля (кастомная тема).
● Когда тип материала с одним набором полей необходимо
представлять в нескольких вариациях (цеплять разные лейауты для
определенных нод одного и того же типа) с возможностью выбора на
каждой ноде собственного лейаута.
● Когда используем CSS фреймворк
○ Можно и без сетки, но придётся писать много стилей, вместо
обычного добавления классов элементам.
Когда ещё?
● У Panelizer отличная интеграция с модулем Features - экспортирует
лейауты и настройки вывода для определенных типов сущностей.
● Если мы разрабатываем проекты по методологии повторного
использования кода.
● Если делаем собственный дистрибутив, установочный профиль или
фичу, которую будем использовать на нескольких проектах.
● Если делаем тему на продажу. На выходе получаем кучу
кастомизабельности сайта при минимуме движений по изменению
представления контента.
Panelizer - панацея от всех бед
везде и всегда?
Нет
Когда использование Panelizer не
оправдано?
● Когда мы делаем проект с маленьким бюджетом и морока с панелями
не оплачивается.
● Когда расширяемость проекта совершенно не важна.
● Когда контент вне региона с контентом никак не связан с основным
контентом.
● Когда не хотим писать свою тему, а используем какую нибудь базовую
(Zen, Omega, Adaptivetheme, etc.)
Как всё таки всё это сделать?
Прототипизирование
● Нудный процесс рисования прототипов
(мокапов, скетчей, и т.д.)
● Для чего:
○ Чтобы охватить как
можно
более оптимальное
количество элементов,
которые должны быть
внутри главной панели с
контентом.
Правки в теме
● Убираем ширину у страницы и региона с контентом
○ Легче всего использовать сетку
● Убираем в теме регионы с сайдбарами
Создание полей со ссылками
● Добавляем несколько block-reference полей
CONTENT (THEME’S REGION)
field_before_content
field_body field_sidebar_2
field_after_content
field_sidebar_1
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Настройка Panelizer
Результат
Создание своего лейаута
● Изменяем *.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
● Чистим кеши
Создание своего лейаута
layout_1.inc
Создание своего лейаута
layout_1.inc
Результат
Ссылки
● Курс по Panels + Panelizer от Drupalize.me
● Дистрибутив Drupal, придерживающийся идеи
“панели везде”: https://drupal.org/project/panopoly
● Куча готовых лейаутов:
https://drupal.org/sandbox/apmsooner/1805170
● Ещё больше лейаутов:
https://drupal.org/project/panels_extra_layouts
So long, and thanks for all the fish
RTFM
Александр Даниленко

More Related Content

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

Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Alexey Kostin
 
Drupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinDrupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinmultiaha
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
Anton Cherepov
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Тарасов Константин
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
Yury Vetrov
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Pavel Tsukanov
 
Drupal theming
Drupal themingDrupal theming
Drupal theming
Gleb K
 
Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]SCINO
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
Denis Latushkin
 
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
PVasili
 
Prezi.com
Prezi.comPrezi.com
Prezi.com
HELEN DEGTYAREVA
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды Web
DrupalSib
 
Раскопки в интерфейсах
Раскопки в интерфейсахРаскопки в интерфейсах
Раскопки в интерфейсах
Alisher Yakupov
 
Kostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationKostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationdrupalconf
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Практикум 3
Практикум 3Практикум 3
Практикум 3
Pavel Kallinikov
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентаций
katrindakatrin
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1Nata Koinova
 

Similar to Panels как философия - Alexander Danilenko (20)

Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры
 
Drupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinDrupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostin
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Drupal theming
Drupal themingDrupal theming
Drupal theming
 
Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]Scino: Developing for Windows Phone [part-1]
Scino: Developing for Windows Phone [part-1]
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
 
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
Drupal vs Бизнес: почему Drupal лучше любого framework и как его правильно го...
 
Prezi.com
Prezi.comPrezi.com
Prezi.com
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды Web
 
Раскопки в интерфейсах
Раскопки в интерфейсахРаскопки в интерфейсах
Раскопки в интерфейсах
 
Kostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationKostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentation
 
Text
TextText
Text
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
Практикум 3
Практикум 3Практикум 3
Практикум 3
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентаций
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1
 

More from DrupalCampDN

Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupalCampDN
 
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqweDependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
DrupalCampDN
 
Our AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew BoagOur AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew Boag
DrupalCampDN
 
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем МирошникGuzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
DrupalCampDN
 
Blocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef DabernigBlocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef Dabernig
DrupalCampDN
 
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman SeferovCKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
DrupalCampDN
 
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander SchedrovDrush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
DrupalCampDN
 
Это Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей ЧерноусЭто Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей Черноус
DrupalCampDN
 
Migrate - new way site upgrade
Migrate - new way site upgradeMigrate - new way site upgrade
Migrate - new way site upgrade
DrupalCampDN
 
Caching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoCaching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander Shumenko
DrupalCampDN
 
Rich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим ВалуевRich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим Валуев
DrupalCampDN
 
May the parallelity be with you! Distributed computing using Erlang language ...
May the parallelity be with you! Distributed computing using Erlang language ...May the parallelity be with you! Distributed computing using Erlang language ...
May the parallelity be with you! Distributed computing using Erlang language ...
DrupalCampDN
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalCampDN
 
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals   maksym moskvychevTwig internals - Maksym MoskvychevTwig internals   maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
DrupalCampDN
 
Презентация модуля YandexMoney - Yury Glushkov
Презентация модуля YandexMoney - Yury GlushkovПрезентация модуля YandexMoney - Yury Glushkov
Презентация модуля YandexMoney - Yury GlushkovDrupalCampDN
 
Drupal and Outer space - Martin Mayer
Drupal and Outer space - Martin MayerDrupal and Outer space - Martin Mayer
Drupal and Outer space - Martin Mayer
DrupalCampDN
 
Boost your theming skills - Artem Shymko
Boost your theming skills - Artem ShymkoBoost your theming skills - Artem Shymko
Boost your theming skills - Artem Shymko
DrupalCampDN
 
Continious integration - Иван Лещёв
Continious integration - Иван ЛещёвContinious integration - Иван Лещёв
Continious integration - Иван ЛещёвDrupalCampDN
 
Rules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukRules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukDrupalCampDN
 
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...DrupalCampDN
 

More from DrupalCampDN (20)

Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
 
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqweDependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
 
Our AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew BoagOur AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew Boag
 
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем МирошникGuzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
 
Blocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef DabernigBlocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef Dabernig
 
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman SeferovCKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
 
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander SchedrovDrush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
 
Это Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей ЧерноусЭто Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей Черноус
 
Migrate - new way site upgrade
Migrate - new way site upgradeMigrate - new way site upgrade
Migrate - new way site upgrade
 
Caching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoCaching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander Shumenko
 
Rich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим ВалуевRich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим Валуев
 
May the parallelity be with you! Distributed computing using Erlang language ...
May the parallelity be with you! Distributed computing using Erlang language ...May the parallelity be with you! Distributed computing using Erlang language ...
May the parallelity be with you! Distributed computing using Erlang language ...
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...
 
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals   maksym moskvychevTwig internals - Maksym MoskvychevTwig internals   maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
 
Презентация модуля YandexMoney - Yury Glushkov
Презентация модуля YandexMoney - Yury GlushkovПрезентация модуля YandexMoney - Yury Glushkov
Презентация модуля YandexMoney - Yury Glushkov
 
Drupal and Outer space - Martin Mayer
Drupal and Outer space - Martin MayerDrupal and Outer space - Martin Mayer
Drupal and Outer space - Martin Mayer
 
Boost your theming skills - Artem Shymko
Boost your theming skills - Artem ShymkoBoost your theming skills - Artem Shymko
Boost your theming skills - Artem Shymko
 
Continious integration - Иван Лещёв
Continious integration - Иван ЛещёвContinious integration - Иван Лещёв
Continious integration - Иван Лещёв
 
Rules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukRules - Yaroslav Doroshuk
Rules - Yaroslav Doroshuk
 
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
 

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

  • 1. Panels как философия Или как стоит использовать модуль Panelizer Александр Даниленко
  • 2. Глоссарий ● Сайтбилдер — Drupal разработчик, собирающий проект из готовых модулей и не желающий или не умеющий писать свои модули. ● Entity (cущность) — всё, что можно расширить полями и показывать как контент. ● Panel layout (лейаут) — шаблон, при помощи которого выводится определенный контент. ● Layout region (регион) — место для контента, который выводится внутри шаблона. ● Ctools Content type (CCT) — Контент, который передаётся в регион лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный CCT и т.д. ● Panelizer default panel — расположение определенных CCT в регионах. ● View mode (тип представления) — способ показа сущности. Например: Анонс, Полный контент, и т.д.
  • 3. WTF? Возможность использования панелей для вывода любых сущностей и любого их типа представления (view mode) Теперь вы можете темизировать панели в то время, когда вы темизируете панели. Наркомания Drupal-way.
  • 4. Немного теории. Как Drupal видит страницу? ● Блоки не зависят от контента (нет понятия контекста) ● Блок можно отобразить только в одном регионе ● Чтобы реализовать логику показа/скрытия блоков — нужно писать PHP код в админке. ● PHP код в админке — это всегда пичалька. Не делайте так никогда. Вообще. HEADER FOOTER SIDEBAR LEFT SIDEBAR RIGHT CONTENT
  • 5. CONTENT Немного теории. Как дизайнеры видят страницу? ● Вся страница является цельным отображением контента, где любой элемент может зависеть от показываемой страницы (от котнекста показа). ● Контекстом для показа может быть текущий пользователь, текущий язык, значение полей текущей сущности, значение поля связанного с текущей сущностью и т.д. ● Даже вьюшки.
  • 6. Немного теории. Как Я вижу страницу? ● Вверху - основные элементы шапки, одинаковые для всех страниц. Например: логотип, название сайта, слоган. ● Контент - панель с некоторым количеством регионов. ● Футер - копирайты. BRANDING COPYRIGHT CONTENT
  • 8. Зачем? Мне и так не плохо Больше возможностей при редактировании контента ● Вся мощь панелей: ○ Вставка всего чего угодно и куда угодно (блоки, кастомный текст, вьюшки, элементы страницы (сайтнейм, бредкрамбы, лого, слоган и т.д.). Проще говоря — всё то, что можно вставить в любую панель + поля из вашей сущности. ○ Можно создать уникальный лейаут, практически не прибегая к коду (Flexible). ○ Добавление классов к полям через админку (удобно когда используем сетку или CSS фреймворк) ○ In-pace editng ● Переопределение настроек только для одной сущности.
  • 9. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не есть оптимизация возможностей.
  • 10. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не есть оптимизация возможностей.
  • 11. Когда использование Panelizer оправдано? ● Когда мы — сайтбилдер. ● Когда мы не хотим создавать кучу шаблонов для разных представлений контента. ● Когда у нас проект типа: ○ Набор Landing страниц ○ Проект с минимумом логики и максимумом разнообразного контента ● Когда мы разрабатываем тему с нуля (кастомная тема). ● Когда тип материала с одним набором полей необходимо представлять в нескольких вариациях (цеплять разные лейауты для определенных нод одного и того же типа) с возможностью выбора на каждой ноде собственного лейаута. ● Когда используем CSS фреймворк ○ Можно и без сетки, но придётся писать много стилей, вместо обычного добавления классов элементам.
  • 12. Когда ещё? ● У Panelizer отличная интеграция с модулем Features - экспортирует лейауты и настройки вывода для определенных типов сущностей. ● Если мы разрабатываем проекты по методологии повторного использования кода. ● Если делаем собственный дистрибутив, установочный профиль или фичу, которую будем использовать на нескольких проектах. ● Если делаем тему на продажу. На выходе получаем кучу кастомизабельности сайта при минимуме движений по изменению представления контента.
  • 13. Panelizer - панацея от всех бед везде и всегда? Нет
  • 14. Когда использование Panelizer не оправдано? ● Когда мы делаем проект с маленьким бюджетом и морока с панелями не оплачивается. ● Когда расширяемость проекта совершенно не важна. ● Когда контент вне региона с контентом никак не связан с основным контентом. ● Когда не хотим писать свою тему, а используем какую нибудь базовую (Zen, Omega, Adaptivetheme, etc.)
  • 15. Как всё таки всё это сделать? Прототипизирование ● Нудный процесс рисования прототипов (мокапов, скетчей, и т.д.) ● Для чего: ○ Чтобы охватить как можно более оптимальное количество элементов, которые должны быть внутри главной панели с контентом.
  • 16. Правки в теме ● Убираем ширину у страницы и региона с контентом ○ Легче всего использовать сетку ● Убираем в теме регионы с сайдбарами
  • 17. Создание полей со ссылками ● Добавляем несколько block-reference полей CONTENT (THEME’S REGION) field_before_content field_body field_sidebar_2 field_after_content field_sidebar_1
  • 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 ● Чистим кеши
  • 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. So long, and thanks for all the fish RTFM Александр Даниленко