rules - правила без исключений
DESCRIPTION
Официальный сайт мероприятия - drupal-sliot.byTRANSCRIPT
1
2012 © Виталий Иоскевич | [email protected] | @ipunker
Я не хочу писать код.
Rules – правила без исключенийhttp://drupal.org/project/rules
!!!Disclaimer!!!Drupal beginners only!
Слабонервные кодеры могут покинуть помещение.
лорлорл2
● Описание и хранение данных:Сущности (Entities)
● Выборка данных: Представления (Views)
● Вывод данных:Context, Panels, ...
● Внешний вид: Drupal Themes● Вроде все, или чего-то не хватает?
Drupal для сайтбилдера
2012 © Виталий Иоскевич | [email protected] | @ipunker
лорлорл3
2012 © Виталий Иоскевич | [email protected] | @ipunker
● Как уведомить автора ноды о комментарии?● Как послать переадресовать анонимного
пользователя?● Как создать ноду определенного типа
автоматически?● Кто убил Кеннеди?● Как сменить роль пользователя автоматически?● Почему на мой сайт ходит один юзер в день, и
его зовут Гугл Бот?● Почему мой сайт на Друпале?● Кто все эти люди?
Простые вопросы
лорлорл4
2012 © Виталий Иоскевич | [email protected] | @ipunker
Drupal.org: там много модулей!!!
Простой ответ:
лорлорл5
2012 © Виталий Иоскевич | [email protected] | @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
Модули, модули!!!
лорлорл6
2012 © Виталий Иоскевич | [email protected] | @ipunker
Не надо запоминать предыдущий слайд, там все неправда.
Модули, модули!!!
лорлорл7
2012 © Виталий Иоскевич | [email protected] | @ipunker
Причем тут правила, если нам нужны действия?
We need [conditional] actions!
лорлорл8
2012 © Виталий Иоскевич | [email protected] | @ipunker
Event + [Condition] + Action = Rule(s)
Событие + [Условие] + Действие = Rule(s)
лорлорл9
2012 © Виталий Иоскевич | [email protected] | @ipunker
● Описание и хранение данных:Сущности (Entities)
● Выборка данных: Представления (Views)
● Вывод данных:Context, Panels, ...
● Внешний вид: Drupal Themes● ...
Drupal для сайтбилдера
лорлорл10
2012 © Виталий Иоскевич | [email protected] | @ipunker
● Описание и хранение данных:Сущности (Entities)
● Выборка данных: Представления (Views)
● Вывод данных:Context, Panels, ...
● Внешний вид: Drupal Themes● События, реакции, логика: Rules
Drupal для сайтбилдера
лорлорл11
2012 © Виталий Иоскевич | [email protected] | @ipunker
Event (событие) [Условие] Действие
Добавлена нода Нода имеет тип “Новость”
Отправить Email модераторам
Юзер зашел на сайт Юзер имеет роль “Модератор”
Показать сообщение с кол-вом последних новостей
... Тут ровно три точки ....
Модератор опубликовал ноду
Автор ноды – аноним;Email автора в системе не зарегистрирован
Создать юзера;Присвоить роль;Начислить 5 капель карму
Добавлен комментарий Автор комментария – автор ноды
Не уведомлять автора ноды
Content (URL) is viewed URL= [АДРЕС НОДЫ] Редирект на другую страницу
Простые правила
лорлорл15
2012 © Виталий Иоскевич | [email protected] | @ipunker
Ой-ой-ой, что это?Loop
if()
else{}
Rule in Rule
лорлорл16
2012 © Виталий Иоскевич | [email protected] | @ipunker
Что еще?● Rules components: из Rules можно вызывать Rules● Loops – циклы в действиях Rules● Rules Scheduler - запуск Rules по расписанию (да-да,
Cron нужен)
лорлорл17
2012 © Виталий Иоскевич | [email protected] | @ipunker
И снова модули● Conditional Rules: добавляем условия в действия (доп.
модуль). If, else, switch...● Rules forms: события генерации (build), валидации,
сабмита форм (забыть как страшный сон!!!).● Rules Links● ...
лорлорл18
2012 © Виталий Иоскевич | [email protected] | @ipunker
Поддержка● Field API● Entity API● VIews● Features● Commerce● ...
лорлорл19
2012 © Виталий Иоскевич | [email protected] | @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 order
hook_whatever_it_is_called()
[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_три_точки()
лорлорл21
2012 © Виталий Иоскевич | [email protected] | @ipunker
Кодеры, вернитесь!
Эта волшебная аббревиатура:
лорлорл22
2012 © Виталий Иоскевич | [email protected] | @ipunker
Кодеры, вернитесь!
Эта волшебная аббревиатура:
API
лорлорл23
2012 © Виталий Иоскевич | [email protected] | @ipunker
Кодеры, вернитесь!
'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',
),),
Свой собственный Rules action с блекджеком и $_SESSION
лорлорл24
2012 © Виталий Иоскевич | [email protected] | @ipunker
Кодеры, вернитесь!
'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,
), ... ОПЯТЬ ТРИ ТОЧКИ!!!
Свой собственный Rules action: открыть что-нибудь полезное в попапе
лорлорл25
2012 © Виталий Иоскевич | [email protected] | @ipunker
Производительность
Если вы используете Views – вас это не должно интересовать.
лорлорл26
2012 © Виталий Иоскевич | [email protected] | @ipunker
Производительность
Ну ладно, расскажу.
лорлорл29
2012 © Виталий Иоскевич | [email protected] | @ipunker
Хватит теории!
Мастер-класс?Вопросы?
30
2012 © Виталий Иоскевич | [email protected] | @ipunker
Rules – правила без исключенийhttp://drupal.org/project/rules