SlideShare a Scribd company logo
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
Александр Даниленко - Panels как философия
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 
Александр Даниленко

More Related Content

PDF
Panels как философия - Alexander Danilenko
PDF
Premium-темы WordPress
PDF
Чеботарь Кирилл - Panels - пособие для начинающих
PPT
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
PDF
Денис Головняк - Продвинутый поиск с помощью Search API
PPT
Сергей Мирошниченко - SEO-friendly data migration
PPTX
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
PPTX
Березовский Андрей - Social Authentication
Panels как философия - Alexander Danilenko
Premium-темы WordPress
Чеботарь Кирилл - Panels - пособие для начинающих
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Денис Головняк - Продвинутый поиск с помощью Search API
Сергей Мирошниченко - SEO-friendly data migration
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Березовский Андрей - Social Authentication

Viewers also liked (12)

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

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

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

More from LEDC 2016 (20)

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