Александр Даниленко - Panels как философия
description
Transcript of Александр Даниленко - Panels как философия
![Page 1: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/1.jpg)
Panels как философия
Александр Даниленко
Blink Reaction International LLC
![Page 2: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/2.jpg)
Глоссарий
● Сайтбилдер — Drupal разработчик, собирающий проект из готовых модулей и не желающий или не умеющий писать свои модули.
● Entity (cущность) — всё, что можно расширить полями и показывать как контент.
● Panel layout (лейаут) — шаблон, при помощи которого выводится определенный контент.
● Layout region (регион) — место для контента, который выводится внутри шаблона.
● Ctools Content type (CCT) — Контент, который передаётся в регион лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный CCT и т.д.
● Panelizer default panel — расположение определенных CCT в регионах.
● View mode (тип представления) — способ показа сущности. Например: Анонс, Полный контент, и т.д.
![Page 3: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/3.jpg)
Философия? Яжпрограммист!
«С самого начала философия имела две разные цели, которые считались тесно связанными между собой. С одной стороны, философия стремилась к теоретическому осмыслению структуры мира; с другой — она пыталась найти и поведать лучший из возможных образов жизни.»
![Page 4: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/4.jpg)
Немного теории.Как Drupal видит страницу?
● Блоки не зависят от контента (нет понятия контекста)
● Блок можно отобразить только в одном регионе
● Чтобы реализовать логику показа/скрытия блоков — нужно писать PHP код в админке.
● PHP код в админке — это всегда пичалька. Не делайте так никогда. Вообще.
HEADER
FOOTER
SIDEBAR LEFT
SIDEBAR RIGHT
CONTENT
![Page 5: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/5.jpg)
CONTENT
Немного теории.Как дизайнеры видят страницу?
● Вся страница является цельным отображением контента, где любой элемент может зависеть от показываемой страницы (от котнекста показа).
● Контекстом для показа может быть текущий пользователь, текущий язык, значение полей текущей сущности, значение поля связанного с текущей сущностью и т.д.
● Даже вьюшки.
![Page 6: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/6.jpg)
Немного теории.Как Я вижу страницу?
● Вверху - основные элементы шапки, одинаковые для всех страниц. Например: логотип, название сайта, слоган.
● Контент - панель с некоторым количеством регионов.
● Футер - копирайты.
BRANDING
COPYRIGHT
CONTENT
![Page 7: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/7.jpg)
Вывод
![Page 8: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/8.jpg)
Panelizer? WTF?
Возможность использования панелей для вывода любых сущностей и любого их типа представления (view mode)
Теперь вы можете темизировать панели в то время, когда вы темизируете панели. Наркомания Drupal-way.
![Page 9: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/9.jpg)
Зачем? Мне и так неплохо
Больше возможностей при редактировании контента● Вся мощь панелей:
o Вставка всего чего угодно и куда угодно (блоки, кастомный текст, вьюшки, элементы страницы (сайтнейм, бредкрамбы, лого, слоган и т.д.). Проще говоря — всё то, что можно вставить в любую панель + поля из вашей сущности.
o Можно создать уникальный лейаут, практически не прибегая к коду (Flexible).
o Добавление классов к полям через админку (удобно когда используем сетку или CSS фреймворк)
o In-pace editng● Переопределение настроек только для одной
сущности.
![Page 10: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/10.jpg)
Пример сложной задачи
Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись.
Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не совсем является оптимизацией возможностей и Drupal-way подхода.
![Page 11: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/11.jpg)
Пример сложной задачи
Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись.
Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не совсем является оптимизацией возможностей и Drupal-way подхода.
![Page 12: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/12.jpg)
Когда использование Panelizer оправдано?
● Когда мы — сайтбилдер.● Когда мы не хотим создавать кучу шаблонов для разных
представлений контента.● Когда у нас проект типа:
○ Набор Landing страниц○ Проект с минимумом логики и максимумом разнообразного
контента● Когда мы разрабатываем тему с нуля (кастомная тема).● Когда тип материала с одним набором полей необходимо
представлять в нескольких вариациях (цеплять разные лейауты для определенных нод одного и того же типа) с возможностью выбора на каждой ноде собственного лейаута.
● Когда используем CSS фреймворк○ Можно и без сетки, но придётся писать много стилей, вместо
обычного добавления классов элементам.
![Page 13: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/13.jpg)
Когда ещё?
● У Panelizer отличная интеграция с модулем Features - экспортирует лейауты и настройки вывода для определенных типов сущностей.
● Если мы разрабатываем проекты по методологии повторного использования кода.
● Если делаем собственный дистрибутив, установочный профиль или фичу, которую будем использовать на нескольких проектах.
● Если делаем тему на продажу. На выходе получаем кучу кастомизабельности сайта при минимуме движений по изменению представления контента.
![Page 14: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/14.jpg)
Когда использование Panelizer не оправдано?
● Когда мы делаем проект с маленьким бюджетом и морока с панелями не оплачивается.
● Когда расширяемость проекта совершенно не важна.● Когда контент вне региона с контентом никак не связан с основным
контентом.● Когда разработчик не хочет потратить время на изучение новых
подходов и технологий.
— Как мотивировать себя что-то делать?
— Да никак, оставайтесь в жoпе.
Артемий Лебедев
![Page 15: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/15.jpg)
Как всё таки всё это сделать?Прототипизирование
● Нудный процесс рисования прототипов (мокапов, скетчей, и т.д.)
● Для чего:o Чтобы охватить как
можно более оптимальное количество элементов, которые должны быть внутри главной панели с контентом.
![Page 16: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/16.jpg)
Правки в теме
● Убираем ширину у страницы и региона с контентом○ Легче всего использовать сетку
● Убираем в теме регионы с сайдбарами● Используем Panels Everywhere
![Page 17: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/17.jpg)
Создание полей со ссылками
● Добавляем несколько reference полей
CONTENT (THEME’S REGION)
field_before_content
field_body field_sidebar_2
field_after_content
field_sidebar_1
![Page 18: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/18.jpg)
Настройка Panelizer
![Page 19: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/19.jpg)
Настройка Panelizer
![Page 20: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/20.jpg)
Настройка Panelizer
![Page 21: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/21.jpg)
Настройка Panelizer
![Page 22: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/22.jpg)
Настройка Panelizer
![Page 23: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/23.jpg)
Настройка Panelizer
![Page 24: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/24.jpg)
Настройка Panelizer
![Page 25: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/25.jpg)
Настройка Panelizer
![Page 26: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/26.jpg)
Результат
![Page 27: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/27.jpg)
Создание своего лейаута
● Изменяем *.info файлo plugins[panels][layouts] = panels/layouts
● Создаём файлы:o THEME / panels / layouts / layout_1/ layout_1.inco THEME / panels / layouts / layout_1/ layout_1.csso THEME / panels / layouts / layout_1 / layout_1.pngo THEME / panels / layouts / layout_1 / layout_1.tpl.php
● Чистим кеши
![Page 28: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/28.jpg)
Создание своего лейаутаlayout_1.inc
![Page 29: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/29.jpg)
Создание своего лейаутаlayout_1.tpl.php
![Page 30: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/30.jpg)
Результат
![Page 31: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/31.jpg)
CCT - CTools Content Type
![Page 32: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/32.jpg)
CCT - CTools Content Type
![Page 33: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/33.jpg)
CCT - CTools Content Type
![Page 34: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/34.jpg)
CCT - CTools Content Type
![Page 35: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/35.jpg)
CCT - CTools Content Type
![Page 36: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/36.jpg)
CCT - CTools Content Type
![Page 37: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/37.jpg)
![Page 38: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/38.jpg)
hook_ctools_plugin_directory()
![Page 39: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/39.jpg)
/plugins/content_types/no_context_content_type.inc
![Page 40: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/40.jpg)
/plugins/content_types/no_context_content_type.inc
![Page 41: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/41.jpg)
/plugins/content_types/no_context_content_type.inc
![Page 42: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/42.jpg)
/plugins/content_types/no_context_content_type.inc
![Page 43: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/43.jpg)
Ссылки
● Курс по Panels + Panelizer от Drupalize.me● Дистрибутив Drupal, придерживающийся идеи
“панели везде”: https://drupal.org/project/panopoly● Куча готовых лейаутов:
https://drupal.org/sandbox/apmsooner/1805170● Ещё больше лейаутов:
https://drupal.org/project/panels_extra_layouts● Подробно о CCT
http://internetdevels.ru/blog/ctools-content-type
![Page 44: Александр Даниленко - Panels как философия](https://reader035.fdocument.pub/reader035/viewer/2022081603/557c8193d8b42a8a208b463b/html5/thumbnails/44.jpg)
So long, and thanks for all the fish
RTFM
Александр Даниленко