SlideShare a Scribd company logo
Rules – правила без
                 исключений
                 http://drupal.org/project/rules




   Я не хочу писать код.


               !!!Disclaimer!!!
            Drupal beginners only!
Слабонервные кодеры могут покинуть помещение.



  2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Drupal для сайтбилдера
●   Описание и хранение данных:
    Сущности (Entities)
●   Выборка данных:
    Представления (Views)
●   Вывод данных:
    Context, Panels, ...
●   Внешний вид: Drupal Themes
●   Вроде все, или чего-то не хватает?

         2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Простые вопросы
●   Как уведомить автора ноды о комментарии?
●   Как послать переадресовать анонимного
    пользователя?
●   Как создать ноду определенного типа
    автоматически?
●   Кто убил Кеннеди?
●   Как сменить роль пользователя автоматически?
●   Почему на мой сайт ходит один юзер в день, и
    его зовут Гугл Бот?
●   Почему мой сайт на Друпале?
●   Кто все эти люди?
          2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Простой ответ:
Drupal.org: там много модулей!!!




   2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Модули, модули!!!
●   Q: Как уведомить автора ноды о комментарии?
●   A: Comment Notify
●   Q: Как переадресовать анонимного пользователя?
●   A: Anonymous login
●   Q: Как создать ноду определенного типа автоматически?
●   A: Actions (core)
●   Q: Кто убил Кеннеди?
●   A: drupal.org/project/[CENSORED]
●   Q: Как сменить роль пользователя автоматически?
●   A: Role Expire
●   Q: Почему на мой сайт ходит только один юзер в день, и
    его зовут Гугл Бот?
●   A: Пиши нормальный контент (c) Google
●   Q: Почему мой сайт на Друпале?
●   A: Everything is possible with Drupal (c) я и Шелдон Купер
●   Q: Кто все эти люди?
●   A: http://drupal.org/community

           2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Модули, модули!!!
Не надо запоминать предыдущий слайд,
           там все неправда.




     2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
We need [conditional] actions!



Причем тут правила, если нам нужны
             действия?




     2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Event + [Condition] + Action
          = Rule(s)


Событие + [Условие] + Действие
          = Rule(s)


     2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Drupal для сайтбилдера
●   Описание и хранение данных:
    Сущности (Entities)
●   Выборка данных:
    Представления (Views)
●   Вывод данных:
    Context, Panels, ...
●   Внешний вид: Drupal Themes
●   ...

            2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Drupal для сайтбилдера
●   Описание и хранение данных:
    Сущности (Entities)
●   Выборка данных:
    Представления (Views)
●   Вывод данных:
    Context, Panels, ...
●   Внешний вид: Drupal Themes
●   События, реакции, логика: Rules

         2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Простые правила
      Event (событие)                 [Условие]                      Действие
Добавлена нода                Нода имеет тип                Отправить Email
                              “Новость”                     модераторам
Юзер зашел на сайт            Юзер имеет роль               Показать сообщение с
                              “Модератор”                   кол-вом последних
                                                            новостей
...                           Тут ровно три точки           ....
Модератор опубликовал         Автор ноды – аноним;          Создать юзера;
ноду                          Email автора в                Присвоить роль;
                              системе не                    Начислить 5 капель
                              зарегистрирован               карму
Добавлен комментарий          Автор комментария –           Не уведомлять автора
                              автор ноды                    ноды
Content (URL) is viewed       URL= [АДРЕС НОДЫ]             Редирект на другую
                                                            страницу

               2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Простые правила




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Чуть посложнее




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Чуть посложнее 2




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Ой-ой-ой, что это?
       Loop




         if()




      else{}

Rule in Rule




                2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Что еще?
●   Rules components: из Rules можно вызывать Rules
●   Loops – циклы в действиях Rules
●   Rules Scheduler - запуск Rules по расписанию (да-да,
    Cron нужен)




            2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
И снова модули
●   Conditional Rules: добавляем условия в действия (доп.
    модуль). If, else, switch...
●   Rules forms: события генерации (build), валидации,
    сабмита форм (забыть как страшный сон!!!).
●   Rules Links
●   ...




            2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Поддержка
●   Field API
●   Entity API
●   VIews
●   Features
●   Commerce
●   ...




            2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Drupal hooks?
                               Event = hook
                    Event                                          Hook
Before saving content                           hook_node_presave()
After saving new content                        hook_node_insert()
Drupal is initializing                          hook_init()
Select available payment methods for an         hook_whatever_it_is_called()
order
[Form name] form is being validated             hook_form_alter()
User account page is viewed                     hook_user_view()
User has logged in                              hook_user_login()
...                                             hook_три_точки()



                  2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Полезность
                   Rules debug




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Кодеры, вернитесь!
   Эта волшебная аббревиатура:




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Кодеры, вернитесь!
   Эта волшебная аббревиатура:




                API
2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Кодеры, вернитесь!
          Свой собственный Rules action с блекджеком и $_SESSION


'load_data_from_session' => array(
    'label' => t('Load Text type value from $_SESSION'),
    'parameter' => array(
                          'data_key' => array(
                                 'type' => 'token',
                                 'label' => t('Blackjack!'),
                                 'default mode' => 'input'
                          ),
    ),
    'group' => t('Rules Session'),
         'provides' => array(
                    'loaded_session_data' => array(
                          'label' => t('Loaded session data.'),
                          'type' => 'text',
                    )
              ),
    'callbacks' => array(
                          'execute' => '_rules_session_load_data_from_session',
    ),
       ),

                   2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Кодеры, вернитесь!
        Свой собственный Rules action: открыть что-нибудь полезное в
                                  попапе
'colorbox_popup' => array(
    'label' => t('Open colorbox popup'),
    'parameter' => array(
      'url' => array(
              'type' => 'text',
              'label' => t('path to the content to show in popup')
      ),
              'width' => array(
                      'type' => 'integer',
                      'label' => t('width of popup window')
              ),
              'height' => array(
                      'type' => 'integer',
                      'label' => t('height of popup window')
              ),
              'use_ajax' => array(
                      'type' => 'boolean',
                      'label' => t('use AJAX to load content?'),
                      'default value' => TRUE,
              ), ... ОПЯТЬ ТРИ ТОЧКИ!!!

                     2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Производительность



Если вы используете Views – вас это не
        должно интересовать.




     2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Производительность



         Ну ладно, расскажу.




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Производительность
                      Терпимо




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Производительность
                        Беда!




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Хватит теории!



        Мастер-класс?
          Вопросы?




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
Rules – правила без
               исключений
               http://drupal.org/project/rules




2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker

More Related Content

What's hot

Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
Andrei Solntsev
 
Как построить DOM
Как построить DOMКак построить DOM
Как построить DOM
Roman Dvornov
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоStanfy
 
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Ontico
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONIvan Nemytchenko
 
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Yandex
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
Igor Shkulipa
 
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
Alexei Smolyanov
 
Next Gen Applications
Next Gen ApplicationsNext Gen Applications
Next Gen Applications
Vittorio Cioe
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
Alexey Ivanov
 
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
Омские ИТ-субботники
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
Alexander Makarov
 
DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
Roman Dvornov
 

What's hot (15)

Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
Как построить DOM
Как построить DOMКак построить DOM
Как построить DOM
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Фундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел ТайкалоФундаментальные основы разработки под iOS. Павел Тайкало
Фундаментальные основы разработки под iOS. Павел Тайкало
 
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
 
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"Алексей Андросов "Тотальная заморозка = быстрая загрузка"
Алексей Андросов "Тотальная заморозка = быстрая загрузка"
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
 
Next Gen Applications
Next Gen ApplicationsNext Gen Applications
Next Gen Applications
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
 
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
 

Similar to Rules - правила без исключений

За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
Dmytro Zharii
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
Yulia Tsisyk
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
MskDotNet Community
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
Yandex
 
"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс
Yandex
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
Viper architecture
Viper architectureViper architecture
Viper architecture
Katerina Korovkina
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
Igor Shkulipa
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
Yuri Shmakov
 
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
EgorPetrov9
 
Yii2
Yii2Yii2
Yii2
Noveo
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Pavel Tsukanov
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
Igor Izraylevych
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 
Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web
Аліна Шепшелей
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"
Inhacking
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
 

Similar to Rules - правила без исключений (20)

За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013За пределами Page Object. ATDays 2013 Киев. Февраль 2013
За пределами Page Object. ATDays 2013 Киев. Февраль 2013
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
 
"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс"Рекомендации по проектированию API". Марина Степанова, Яндекс
"Рекомендации по проектированию API". Марина Степанова, Яндекс
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Viper architecture
Viper architectureViper architecture
Viper architecture
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий  (Agora)
Избавляемся от старья и переходим на SwiftUI / Руслан Кавецкий (Agora)
 
Yii2
Yii2Yii2
Yii2
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
 
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 
Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web Vladimir Mikhel Scrapping the web
Vladimir Mikhel Scrapping the web
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 

More from zabej

Map of tomorrow. Pecha kucha. 2019
Map of tomorrow. Pecha kucha. 2019Map of tomorrow. Pecha kucha. 2019
Map of tomorrow. Pecha kucha. 2019
zabej
 
Data detox. Пазабаўляемся ад таксічных дадзеных
Data detox. Пазабаўляемся ад таксічных дадзеныхData detox. Пазабаўляемся ад таксічных дадзеных
Data detox. Пазабаўляемся ад таксічных дадзеных
zabej
 
Культура працы з git i github
Культура працы з git i githubКультура працы з git i github
Культура працы з git i github
zabej
 
Модуль прыёму ахвяраванняў Doika
Модуль прыёму ахвяраванняў DoikaМодуль прыёму ахвяраванняў Doika
Модуль прыёму ахвяраванняў Doika
zabej
 
Donation module Doika
Donation module DoikaDonation module Doika
Donation module Doika
zabej
 
Майстар-клас. Як стварыць лагатып?
Майстар-клас. Як стварыць лагатып?Майстар-клас. Як стварыць лагатып?
Майстар-клас. Як стварыць лагатып?
zabej
 
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
zabej
 
Роль дизайнера в команде
Роль дизайнера в командеРоль дизайнера в команде
Роль дизайнера в команде
zabej
 
Как получить дизайн, который понравиться организации?
Как получить дизайн, который понравиться организации?Как получить дизайн, который понравиться организации?
Как получить дизайн, который понравиться организации?
zabej
 
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнагаАдкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
zabej
 
Commonification Sharing and Creative Commons. Alexandros Nousias
Commonification Sharing and Creative Commons. Alexandros Nousias Commonification Sharing and Creative Commons. Alexandros Nousias
Commonification Sharing and Creative Commons. Alexandros Nousias
zabej
 
Вікі-летнік 2017. Прэзентацыя ідэі
Вікі-летнік 2017. Прэзентацыя ідэіВікі-летнік 2017. Прэзентацыя ідэі
Вікі-летнік 2017. Прэзентацыя ідэі
zabej
 
Гісторыя Творчых Суполак і планы на 2017 год
Гісторыя Творчых Суполак і планы на 2017 годГісторыя Творчых Суполак і планы на 2017 год
Гісторыя Творчых Суполак і планы на 2017 год
zabej
 
Творчыя суполкі. 2014-2016
Творчыя суполкі. 2014-2016Творчыя суполкі. 2014-2016
Творчыя суполкі. 2014-2016
zabej
 
Лічбавая Майстэрня. V.1.1
Лічбавая Майстэрня. V.1.1Лічбавая Майстэрня. V.1.1
Лічбавая Майстэрня. V.1.1
zabej
 
Лічбавая Майстэрня
Лічбавая МайстэрняЛічбавая Майстэрня
Лічбавая Майстэрня
zabej
 
Прэзентацыя вікідапаможніка, верасень, 2015
Прэзентацыя вікідапаможніка, верасень, 2015Прэзентацыя вікідапаможніка, верасень, 2015
Прэзентацыя вікідапаможніка, верасень, 2015
zabej
 
Вікі-дапаможнік. Кіруй ведамі
Вікі-дапаможнік. Кіруй ведаміВікі-дапаможнік. Кіруй ведамі
Вікі-дапаможнік. Кіруй ведамі
zabej
 
Электронное участие
Электронное участиеЭлектронное участие
Электронное участие
zabej
 
Falanster. Presentation of activity. 2015
Falanster. Presentation of activity. 2015Falanster. Presentation of activity. 2015
Falanster. Presentation of activity. 2015
zabej
 

More from zabej (20)

Map of tomorrow. Pecha kucha. 2019
Map of tomorrow. Pecha kucha. 2019Map of tomorrow. Pecha kucha. 2019
Map of tomorrow. Pecha kucha. 2019
 
Data detox. Пазабаўляемся ад таксічных дадзеных
Data detox. Пазабаўляемся ад таксічных дадзеныхData detox. Пазабаўляемся ад таксічных дадзеных
Data detox. Пазабаўляемся ад таксічных дадзеных
 
Культура працы з git i github
Культура працы з git i githubКультура працы з git i github
Культура працы з git i github
 
Модуль прыёму ахвяраванняў Doika
Модуль прыёму ахвяраванняў DoikaМодуль прыёму ахвяраванняў Doika
Модуль прыёму ахвяраванняў Doika
 
Donation module Doika
Donation module DoikaDonation module Doika
Donation module Doika
 
Майстар-клас. Як стварыць лагатып?
Майстар-клас. Як стварыць лагатып?Майстар-клас. Як стварыць лагатып?
Майстар-клас. Як стварыць лагатып?
 
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
Як эфектыўна працаваць з дызайнерам і скараціць час на дызайн?
 
Роль дизайнера в команде
Роль дизайнера в командеРоль дизайнера в команде
Роль дизайнера в команде
 
Как получить дизайн, который понравиться организации?
Как получить дизайн, который понравиться организации?Как получить дизайн, который понравиться организации?
Как получить дизайн, который понравиться организации?
 
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнагаАдкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
Адкрытыя бізнэс-мадэлі на аснове лічбавага агульнага
 
Commonification Sharing and Creative Commons. Alexandros Nousias
Commonification Sharing and Creative Commons. Alexandros Nousias Commonification Sharing and Creative Commons. Alexandros Nousias
Commonification Sharing and Creative Commons. Alexandros Nousias
 
Вікі-летнік 2017. Прэзентацыя ідэі
Вікі-летнік 2017. Прэзентацыя ідэіВікі-летнік 2017. Прэзентацыя ідэі
Вікі-летнік 2017. Прэзентацыя ідэі
 
Гісторыя Творчых Суполак і планы на 2017 год
Гісторыя Творчых Суполак і планы на 2017 годГісторыя Творчых Суполак і планы на 2017 год
Гісторыя Творчых Суполак і планы на 2017 год
 
Творчыя суполкі. 2014-2016
Творчыя суполкі. 2014-2016Творчыя суполкі. 2014-2016
Творчыя суполкі. 2014-2016
 
Лічбавая Майстэрня. V.1.1
Лічбавая Майстэрня. V.1.1Лічбавая Майстэрня. V.1.1
Лічбавая Майстэрня. V.1.1
 
Лічбавая Майстэрня
Лічбавая МайстэрняЛічбавая Майстэрня
Лічбавая Майстэрня
 
Прэзентацыя вікідапаможніка, верасень, 2015
Прэзентацыя вікідапаможніка, верасень, 2015Прэзентацыя вікідапаможніка, верасень, 2015
Прэзентацыя вікідапаможніка, верасень, 2015
 
Вікі-дапаможнік. Кіруй ведамі
Вікі-дапаможнік. Кіруй ведаміВікі-дапаможнік. Кіруй ведамі
Вікі-дапаможнік. Кіруй ведамі
 
Электронное участие
Электронное участиеЭлектронное участие
Электронное участие
 
Falanster. Presentation of activity. 2015
Falanster. Presentation of activity. 2015Falanster. Presentation of activity. 2015
Falanster. Presentation of activity. 2015
 

Rules - правила без исключений

  • 1. Rules – правила без исключений http://drupal.org/project/rules Я не хочу писать код. !!!Disclaimer!!! Drupal beginners only! Слабонервные кодеры могут покинуть помещение. 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 2. Drupal для сайтбилдера ● Описание и хранение данных: Сущности (Entities) ● Выборка данных: Представления (Views) ● Вывод данных: Context, Panels, ... ● Внешний вид: Drupal Themes ● Вроде все, или чего-то не хватает? 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 3. Простые вопросы ● Как уведомить автора ноды о комментарии? ● Как послать переадресовать анонимного пользователя? ● Как создать ноду определенного типа автоматически? ● Кто убил Кеннеди? ● Как сменить роль пользователя автоматически? ● Почему на мой сайт ходит один юзер в день, и его зовут Гугл Бот? ● Почему мой сайт на Друпале? ● Кто все эти люди? 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 4. Простой ответ: Drupal.org: там много модулей!!! 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 5. Модули, модули!!! ● Q: Как уведомить автора ноды о комментарии? ● A: Comment Notify ● Q: Как переадресовать анонимного пользователя? ● A: Anonymous login ● Q: Как создать ноду определенного типа автоматически? ● A: Actions (core) ● Q: Кто убил Кеннеди? ● A: drupal.org/project/[CENSORED] ● Q: Как сменить роль пользователя автоматически? ● A: Role Expire ● Q: Почему на мой сайт ходит только один юзер в день, и его зовут Гугл Бот? ● A: Пиши нормальный контент (c) Google ● Q: Почему мой сайт на Друпале? ● A: Everything is possible with Drupal (c) я и Шелдон Купер ● Q: Кто все эти люди? ● A: http://drupal.org/community 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 6. Модули, модули!!! Не надо запоминать предыдущий слайд, там все неправда. 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 7. We need [conditional] actions! Причем тут правила, если нам нужны действия? 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 8. Event + [Condition] + Action = Rule(s) Событие + [Условие] + Действие = Rule(s) 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 9. Drupal для сайтбилдера ● Описание и хранение данных: Сущности (Entities) ● Выборка данных: Представления (Views) ● Вывод данных: Context, Panels, ... ● Внешний вид: Drupal Themes ● ... 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 10. Drupal для сайтбилдера ● Описание и хранение данных: Сущности (Entities) ● Выборка данных: Представления (Views) ● Вывод данных: Context, Panels, ... ● Внешний вид: Drupal Themes ● События, реакции, логика: Rules 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 11. Простые правила Event (событие) [Условие] Действие Добавлена нода Нода имеет тип Отправить Email “Новость” модераторам Юзер зашел на сайт Юзер имеет роль Показать сообщение с “Модератор” кол-вом последних новостей ... Тут ровно три точки .... Модератор опубликовал Автор ноды – аноним; Создать юзера; ноду Email автора в Присвоить роль; системе не Начислить 5 капель зарегистрирован карму Добавлен комментарий Автор комментария – Не уведомлять автора автор ноды ноды Content (URL) is viewed URL= [АДРЕС НОДЫ] Редирект на другую страницу 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 12. Простые правила 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 13. Чуть посложнее 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 14. Чуть посложнее 2 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 15. Ой-ой-ой, что это? Loop if() else{} Rule in Rule 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 16. Что еще? ● Rules components: из Rules можно вызывать Rules ● Loops – циклы в действиях Rules ● Rules Scheduler - запуск Rules по расписанию (да-да, Cron нужен) 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 17. И снова модули ● Conditional Rules: добавляем условия в действия (доп. модуль). If, else, switch... ● Rules forms: события генерации (build), валидации, сабмита форм (забыть как страшный сон!!!). ● Rules Links ● ... 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 18. Поддержка ● Field API ● Entity API ● VIews ● Features ● Commerce ● ... 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 19. Drupal hooks? Event = hook Event Hook Before saving content hook_node_presave() After saving new content hook_node_insert() Drupal is initializing hook_init() Select available payment methods for an hook_whatever_it_is_called() order [Form name] form is being validated hook_form_alter() User account page is viewed hook_user_view() User has logged in hook_user_login() ... hook_три_точки() 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 20. Полезность Rules debug 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 21. Кодеры, вернитесь! Эта волшебная аббревиатура: 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 22. Кодеры, вернитесь! Эта волшебная аббревиатура: API 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 23. Кодеры, вернитесь! Свой собственный Rules action с блекджеком и $_SESSION 'load_data_from_session' => array( 'label' => t('Load Text type value from $_SESSION'), 'parameter' => array( 'data_key' => array( 'type' => 'token', 'label' => t('Blackjack!'), 'default mode' => 'input' ), ), 'group' => t('Rules Session'), 'provides' => array( 'loaded_session_data' => array( 'label' => t('Loaded session data.'), 'type' => 'text', ) ), 'callbacks' => array( 'execute' => '_rules_session_load_data_from_session', ), ), 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 24. Кодеры, вернитесь! Свой собственный Rules action: открыть что-нибудь полезное в попапе 'colorbox_popup' => array( 'label' => t('Open colorbox popup'), 'parameter' => array( 'url' => array( 'type' => 'text', 'label' => t('path to the content to show in popup') ), 'width' => array( 'type' => 'integer', 'label' => t('width of popup window') ), 'height' => array( 'type' => 'integer', 'label' => t('height of popup window') ), 'use_ajax' => array( 'type' => 'boolean', 'label' => t('use AJAX to load content?'), 'default value' => TRUE, ), ... ОПЯТЬ ТРИ ТОЧКИ!!! 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 25. Производительность Если вы используете Views – вас это не должно интересовать. 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 26. Производительность Ну ладно, расскажу. 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 27. Производительность Терпимо 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 28. Производительность Беда! 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 29. Хватит теории! Мастер-класс? Вопросы? 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker
  • 30. Rules – правила без исключений http://drupal.org/project/rules 2012 © Виталий Иоскевич | ioskevich@gmail.com | @ipunker