SlideShare une entreprise Scribd logo
1  sur  44
Panels как философия 
Александр Даниленко 
Blink Reaction International LLC
Глоссарий 
● Сайтбилдер — Drupal разработчик, собирающий проект из готовых 
модулей и не желающий или не умеющий писать свои модули. 
● Entity (cущность) — всё, что можно расширить полями и показывать 
как контент. 
● Panel layout (лейаут) — шаблон, при помощи которого выводится 
определенный контент. 
● Layout region (регион) — место для контента, который выводится 
внутри шаблона. 
● Ctools Content type (CCT) — Контент, который передаётся в регион 
лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный 
CCT и т.д. 
● Panelizer default panel — расположение определенных CCT в 
регионах. 
● View mode (тип представления) — способ показа сущности. 
Например: Анонс, Полный контент, и т.д.
Философия? Яжпрограммист! 
«С самого начала философия имела две 
разные цели, которые считались тесно 
связанными между собой. С одной стороны, 
философия стремилась к теоретическому 
осмыслению структуры мира; с другой — 
она пыталась найти и поведать лучший из 
возможных образов жизни.»
Немного теории. 
Как Drupal видит страницу? 
● Блоки не зависят от контента 
(нет понятия контекста) 
● Блок можно отобразить 
только в одном регионе 
● Чтобы реализовать логику 
показа/скрытия блоков — 
нужно писать PHP код в 
админке. 
● PHP код в админке — это 
всегда пичалька. Не делайте 
так никогда. Вообще. 
HEADER 
FOOTER 
SIDEBAR 
LEFT 
SIDEBAR 
RIGHT 
CONTENT
Немного теории. 
Как дизайнеры видят страницу? 
CONTENT 
● Вся страница является 
цельным отображением 
контента, где любой элемент 
может зависеть от 
показываемой страницы (от 
котнекста показа). 
● Контекстом для показа может 
быть текущий пользователь, 
текущий язык, значение полей 
текущей сущности, значение 
поля связанного с текущей 
сущностью и т.д. 
● Даже вьюшки.
Немного теории. 
Как Я вижу страницу? 
● Вверху - основные 
элементы шапки, 
одинаковые для всех 
страниц. Например: 
логотип, название 
сайта, слоган. 
● Контент - панель с 
некоторым количеством 
регионов. 
● Футер - копирайты. 
BRANDING 
CONTENT 
COPYRIGHT
Вывод
Panelizer? WTF? 
Возможность 
использования 
панелей для вывода 
любых сущностей и 
любого их типа 
представления (view 
mode) 
Теперь вы можете темизировать панели в то время, 
когда вы темизируете панели. Наркомания Drupal-way.
Зачем? Мне и так неплохо 
Больше возможностей при 
редактировании контента 
● Вся мощь панелей: 
o Вставка всего чего угодно и куда угодно (блоки, 
кастомный текст, вьюшки, элементы страницы 
(сайтнейм, бредкрамбы, лого, слоган и т.д.). 
Проще говоря — всё то, что можно вставить в 
любую панель + поля из вашей сущности. 
o Можно создать уникальный лейаут, 
практически не прибегая к коду (Flexible). 
o Добавление классов к полям через админку 
(удобно когда используем сетку или CSS 
фреймворк) 
o In-pace editng 
● Переопределение настроек только для одной 
сущности.
Пример сложной 
задачи 
Контент содержит элементы, 
которые необходимо растянуть на 
100% по ширине текущего экрана. 
В обычной ситуации - регион с 
контентом фиксируется по ширине 
и без костылей в подобном случае 
не обойтись. 
Можно наделать новых регионов в 
теме, но использовать их только 
один раз на одной странице. Что 
не совсем является оптимизацией 
возможностей и Drupal-way 
подхода.
Пример сложной 
задачи 
Контент содержит элементы, 
которые необходимо растянуть на 
100% по ширине текущего экрана. 
В обычной ситуации - регион с 
контентом фиксируется по ширине 
и без костылей в подобном случае 
не обойтись. 
Можно наделать новых регионов в 
теме, но использовать их только 
один раз на одной странице. Что 
не совсем является оптимизацией 
возможностей и Drupal-way 
подхода.
Когда использование Panelizer 
оправдано? 
● Когда мы — сайтбилдер. 
● Когда мы не хотим создавать кучу шаблонов для разных 
представлений контента. 
● Когда у нас проект типа: 
○ Набор Landing страниц 
○ Проект с минимумом логики и максимумом разнообразного 
контента 
● Когда мы разрабатываем тему с нуля (кастомная тема). 
● Когда тип материала с одним набором полей необходимо 
представлять в нескольких вариациях (цеплять разные лейауты для 
определенных нод одного и того же типа) с возможностью выбора на 
каждой ноде собственного лейаута. 
● Когда используем CSS фреймворк 
○ Можно и без сетки, но придётся писать много стилей, вместо 
обычного добавления классов элементам.
Когда ещё? 
● У Panelizer отличная интеграция с модулем Features - экспортирует 
лейауты и настройки вывода для определенных типов сущностей. 
● Если мы разрабатываем проекты по методологии повторного 
использования кода. 
● Если делаем собственный дистрибутив, установочный профиль или 
фичу, которую будем использовать на нескольких проектах. 
● Если делаем тему на продажу. На выходе получаем кучу 
кастомизабельности сайта при минимуме движений по изменению 
представления контента.
Когда использование Panelizer не 
оправдано? 
● Когда мы делаем проект с маленьким бюджетом и морока с панелями 
не оплачивается. 
● Когда расширяемость проекта совершенно не важна. 
● Когда контент вне региона с контентом никак не связан с основным 
контентом. 
● Когда разработчик не хочет потратить время на изучение новых 
подходов и технологий. 
— Как мотивировать себя что-то делать? 
— Да никак, оставайтесь в жoпе. 
Артемий Лебедев
Как всё таки всё это сделать? 
Прототипизирование 
● Нудный процесс рисования прототипов (мокапов, 
скетчей, и т.д.) 
● Для чего: 
o Чтобы охватить как 
можно 
более оптимальное 
количество элементов, 
которые должны быть 
внутри главной панели с 
контентом.
Правки в теме 
● Убираем ширину у страницы и региона с контентом 
○ Легче всего использовать сетку 
● Убираем в теме регионы с сайдбарами 
● Используем Panels Everywhere
Создание полей со ссылками 
● Добавляем несколько 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 файл 
o plugins[panels][layouts] = panels/layouts 
● Создаём файлы: 
o THEME / panels / layouts / layout_1/ layout_1.inc 
o THEME / panels / layouts / layout_1/ layout_1.css 
o THEME / panels / layouts / layout_1 / layout_1.png 
o THEME / panels / layouts / layout_1 / layout_1.tpl.php 
● Чистим кеши
Создание своего лейаута 
layout_1.inc
Создание своего лейаута 
layout_1.tpl.php
Результат
CCT - CTools Content Type
CCT - CTools Content Type
CCT - CTools Content Type
CCT - CTools Content Type
CCT - CTools Content Type
CCT - CTools Content Type
hook_ctools_plugin_directory()
/plugins/content_types/no_context_content_type.inc
/plugins/content_types/no_context_content_type.inc
/plugins/content_types/no_context_content_type.inc
/plugins/content_types/no_context_content_type.inc
Ссылки 
● Курс по Panels + Panelizer от Drupalize.me 
● Дистрибутив Drupal, придерживающийся идеи 
“панели везде”: https://drupal.org/project/panopoly 
● Куча готовых 
лейаутов:https://drupal.org/sandbox/apmsooner/18051 
70 
● Ещё больше 
лейаутов:https://drupal.org/project/panels_extra_layout 
s 
● Подробно о CCThttp://internetdevels.ru/blog/ctools-content- 
type
So long, and thanks for all the fish 
RTFM 
Александр Даниленко

Contenu connexe

En vedette

Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...LEDC 2016
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...LEDC 2016
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.LEDC 2016
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовLEDC 2016
 
Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8LEDC 2016
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zLEDC 2016
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersLEDC 2016
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваLEDC 2016
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!LEDC 2016
 
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?LEDC 2016
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APILEDC 2016
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаLEDC 2016
 

En vedette (12)

Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
 
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
Артем Сыльчук - Хранение полей в Drupal. От CCK к FieldableEntityStorageContr...
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
 
Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8Тарас Цюпер - Мультиязычность в Drupal 8
Тарас Цюпер - Мультиязычность в Drupal 8
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated users
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительства
 
Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!Андрей Поданенко - Start using Vagrant now!
Андрей Поданенко - Start using Vagrant now!
 
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?Алексей Горобец - Building Drupal Distributions. Why? When? and How?
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
 
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form APIТарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
Тарас Круц - Tips On Getting Everything You Can Out of Drupal Form API
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импорта
 

Similaire à Александр Даниленко - Panels как философия

Panels
PanelsPanels
Panelszabej
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторdrupalconf
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...PVasili
 
Практическое использование модуля Panels. Богуцкий Виктор
Практическое использование модуля Panels. Богуцкий ВикторПрактическое использование модуля Panels. Богуцкий Виктор
Практическое использование модуля Panels. Богуцкий ВикторPVasili
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейdrupalconf
 
Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Alexey Kostin
 
Drupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinDrupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinmultiaha
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинdrupalconf
 
Презентация по курсу «Проектирования в Axure»
Презентация по курсу  «Проектирования в Axure» Презентация по курсу  «Проектирования в Axure»
Презентация по курсу «Проектирования в Axure» Ekaterina Mironova
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляцииRoman Dvornov
 
Sozdanie saita v_ mc_mediadw3_steps
Sozdanie saita v_ mc_mediadw3_stepsSozdanie saita v_ mc_mediadw3_steps
Sozdanie saita v_ mc_mediadw3_stepsStiv-redter
 
Saita v mc_mediadw3_steps
Saita v  mc_mediadw3_stepsSaita v  mc_mediadw3_steps
Saita v mc_mediadw3_stepsStiv-redter
 
Kostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationKostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationdrupalconf
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаAnton Cherepov
 
Раскопки в интерфейсах
Раскопки в интерфейсахРаскопки в интерфейсах
Раскопки в интерфейсахAlisher Yakupov
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентацийkatrindakatrin
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаYury Vetrov
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Ontico
 

Similaire à Александр Даниленко - Panels как философия (20)

Panels
PanelsPanels
Panels
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
 
Практическое использование модуля Panels. Богуцкий Виктор
Практическое использование модуля Panels. Богуцкий ВикторПрактическое использование модуля Panels. Богуцкий Виктор
Практическое использование модуля Panels. Богуцкий Виктор
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
 
Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры
 
Drupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostinDrupalconf 2012-06-02-kostin
Drupalconf 2012-06-02-kostin
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихин
 
Презентация по курсу «Проектирования в Axure»
Презентация по курсу  «Проектирования в Axure» Презентация по курсу  «Проектирования в Axure»
Презентация по курсу «Проектирования в Axure»
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляции
 
Text
TextText
Text
 
Sozdanie saita v_ mc_mediadw3_steps
Sozdanie saita v_ mc_mediadw3_stepsSozdanie saita v_ mc_mediadw3_steps
Sozdanie saita v_ mc_mediadw3_steps
 
Saita v mc_mediadw3_steps
Saita v  mc_mediadw3_stepsSaita v  mc_mediadw3_steps
Saita v mc_mediadw3_steps
 
Prezi.com
Prezi.comPrezi.com
Prezi.com
 
Kostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentationKostin drupalconf-2011-presentation
Kostin drupalconf-2011-presentation
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
 
Раскопки в интерфейсах
Раскопки в интерфейсахРаскопки в интерфейсах
Раскопки в интерфейсах
 
системы создания и публикации презентаций
системы создания и публикации презентацийсистемы создания и публикации презентаций
системы создания и публикации презентаций
 
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного вебаWUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
WUD2013: Юрий Ветров — Унификация, vol. 1. Фреймворк Mail.Ru для мобильного веба
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)
 

Plus de LEDC 2016

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миLEDC 2016
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"LEDC 2016
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...LEDC 2016
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8LEDC 2016
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...LEDC 2016
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"LEDC 2016
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"LEDC 2016
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8LEDC 2016
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...LEDC 2016
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersLEDC 2016
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...LEDC 2016
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...LEDC 2016
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereLEDC 2016
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleLEDC 2016
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionLEDC 2016
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetLEDC 2016
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesLEDC 2016
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalLEDC 2016
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...LEDC 2016
 

Plus de LEDC 2016 (20)

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
 

Александр Даниленко - Panels как философия

  • 1. Panels как философия Александр Даниленко Blink Reaction International LLC
  • 2. Глоссарий ● Сайтбилдер — Drupal разработчик, собирающий проект из готовых модулей и не желающий или не умеющий писать свои модули. ● Entity (cущность) — всё, что можно расширить полями и показывать как контент. ● Panel layout (лейаут) — шаблон, при помощи которого выводится определенный контент. ● Layout region (регион) — место для контента, который выводится внутри шаблона. ● Ctools Content type (CCT) — Контент, который передаётся в регион лейаута панелей. Это может быть: поле, блок, вьюшка, кастомный CCT и т.д. ● Panelizer default panel — расположение определенных CCT в регионах. ● View mode (тип представления) — способ показа сущности. Например: Анонс, Полный контент, и т.д.
  • 3. Философия? Яжпрограммист! «С самого начала философия имела две разные цели, которые считались тесно связанными между собой. С одной стороны, философия стремилась к теоретическому осмыслению структуры мира; с другой — она пыталась найти и поведать лучший из возможных образов жизни.»
  • 4. Немного теории. Как Drupal видит страницу? ● Блоки не зависят от контента (нет понятия контекста) ● Блок можно отобразить только в одном регионе ● Чтобы реализовать логику показа/скрытия блоков — нужно писать PHP код в админке. ● PHP код в админке — это всегда пичалька. Не делайте так никогда. Вообще. HEADER FOOTER SIDEBAR LEFT SIDEBAR RIGHT CONTENT
  • 5. Немного теории. Как дизайнеры видят страницу? CONTENT ● Вся страница является цельным отображением контента, где любой элемент может зависеть от показываемой страницы (от котнекста показа). ● Контекстом для показа может быть текущий пользователь, текущий язык, значение полей текущей сущности, значение поля связанного с текущей сущностью и т.д. ● Даже вьюшки.
  • 6. Немного теории. Как Я вижу страницу? ● Вверху - основные элементы шапки, одинаковые для всех страниц. Например: логотип, название сайта, слоган. ● Контент - панель с некоторым количеством регионов. ● Футер - копирайты. BRANDING CONTENT COPYRIGHT
  • 8. Panelizer? WTF? Возможность использования панелей для вывода любых сущностей и любого их типа представления (view mode) Теперь вы можете темизировать панели в то время, когда вы темизируете панели. Наркомания Drupal-way.
  • 9. Зачем? Мне и так неплохо Больше возможностей при редактировании контента ● Вся мощь панелей: o Вставка всего чего угодно и куда угодно (блоки, кастомный текст, вьюшки, элементы страницы (сайтнейм, бредкрамбы, лого, слоган и т.д.). Проще говоря — всё то, что можно вставить в любую панель + поля из вашей сущности. o Можно создать уникальный лейаут, практически не прибегая к коду (Flexible). o Добавление классов к полям через админку (удобно когда используем сетку или CSS фреймворк) o In-pace editng ● Переопределение настроек только для одной сущности.
  • 10. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не совсем является оптимизацией возможностей и Drupal-way подхода.
  • 11. Пример сложной задачи Контент содержит элементы, которые необходимо растянуть на 100% по ширине текущего экрана. В обычной ситуации - регион с контентом фиксируется по ширине и без костылей в подобном случае не обойтись. Можно наделать новых регионов в теме, но использовать их только один раз на одной странице. Что не совсем является оптимизацией возможностей и Drupal-way подхода.
  • 12. Когда использование Panelizer оправдано? ● Когда мы — сайтбилдер. ● Когда мы не хотим создавать кучу шаблонов для разных представлений контента. ● Когда у нас проект типа: ○ Набор Landing страниц ○ Проект с минимумом логики и максимумом разнообразного контента ● Когда мы разрабатываем тему с нуля (кастомная тема). ● Когда тип материала с одним набором полей необходимо представлять в нескольких вариациях (цеплять разные лейауты для определенных нод одного и того же типа) с возможностью выбора на каждой ноде собственного лейаута. ● Когда используем CSS фреймворк ○ Можно и без сетки, но придётся писать много стилей, вместо обычного добавления классов элементам.
  • 13. Когда ещё? ● У Panelizer отличная интеграция с модулем Features - экспортирует лейауты и настройки вывода для определенных типов сущностей. ● Если мы разрабатываем проекты по методологии повторного использования кода. ● Если делаем собственный дистрибутив, установочный профиль или фичу, которую будем использовать на нескольких проектах. ● Если делаем тему на продажу. На выходе получаем кучу кастомизабельности сайта при минимуме движений по изменению представления контента.
  • 14. Когда использование Panelizer не оправдано? ● Когда мы делаем проект с маленьким бюджетом и морока с панелями не оплачивается. ● Когда расширяемость проекта совершенно не важна. ● Когда контент вне региона с контентом никак не связан с основным контентом. ● Когда разработчик не хочет потратить время на изучение новых подходов и технологий. — Как мотивировать себя что-то делать? — Да никак, оставайтесь в жoпе. Артемий Лебедев
  • 15. Как всё таки всё это сделать? Прототипизирование ● Нудный процесс рисования прототипов (мокапов, скетчей, и т.д.) ● Для чего: o Чтобы охватить как можно более оптимальное количество элементов, которые должны быть внутри главной панели с контентом.
  • 16. Правки в теме ● Убираем ширину у страницы и региона с контентом ○ Легче всего использовать сетку ● Убираем в теме регионы с сайдбарами ● Используем Panels Everywhere
  • 17. Создание полей со ссылками ● Добавляем несколько reference полей CONTENT (THEME’S REGION) field_before_content field_body field_sidebar_2 field_after_content field_sidebar_1
  • 27. Создание своего лейаута ● Изменяем *.info файл o plugins[panels][layouts] = panels/layouts ● Создаём файлы: o THEME / panels / layouts / layout_1/ layout_1.inc o THEME / panels / layouts / layout_1/ layout_1.css o THEME / panels / layouts / layout_1 / layout_1.png o THEME / panels / layouts / layout_1 / layout_1.tpl.php ● Чистим кеши
  • 31. CCT - CTools Content Type
  • 32. CCT - CTools Content Type
  • 33. CCT - CTools Content Type
  • 34. CCT - CTools Content Type
  • 35. CCT - CTools Content Type
  • 36. CCT - CTools Content Type
  • 37.
  • 43. Ссылки ● Курс по Panels + Panelizer от Drupalize.me ● Дистрибутив Drupal, придерживающийся идеи “панели везде”: https://drupal.org/project/panopoly ● Куча готовых лейаутов:https://drupal.org/sandbox/apmsooner/18051 70 ● Ещё больше лейаутов:https://drupal.org/project/panels_extra_layout s ● Подробно о CCThttp://internetdevels.ru/blog/ctools-content- type
  • 44. So long, and thanks for all the fish RTFM Александр Даниленко