ݺߣ

ݺߣShare a Scribd company logo
Views - стандарт вывода
списка данных.
Расширение Views -
написание плагинов
DrupalCamp Kyiv 2011
Views – это лишнее, или технологии движут
человечество!?
PHP СУБД
Drupal
Views
Всё так просто!
Всё можно написать на PHP, используя MySQL.
Ничего лишнего.
Сколько реально надо знать!
Виды вывода данных
Роль Views
●Вывод элемента. Вывод материала.
●Вывод множества однотипной информации.
Список – Views.
●Вывод множества разнотипной информации.
Blocks(Блоки), Panels(Панели).
Вывод множества разнотипной информации
Blocks(Блоки), Panels(Панели)
Вывод множества однотипной информации
Список – Views
Основная область
Область стиля
Заголовок, подвал
Стиль рядка
Способы возможной реализации бизнес логики
●Написание отдельного модуля, реализующий получение и
темизацию данных без использования Views.
●Перегрузка тем существующих Views.
●Создание модуля, реализирующего различные плагины для
Views, с возможностью дальнейшего использования
возможностей Drupal: хуки, препроцессинг, перегрузка тем.
●Реализация hook_views_api,
●Реализация hook_views_plugins, объявление плагинов.
●Реализация плагинов.
●Реализация функций предварительной обработки шаблонов.
●Реализация шаблонов .tpl.php.
Завершённый плагин стиля состоит из
компонентов:
Структура каталогов модуля
Определение дополнительных файлов,
используемых в module.info
...
files[] = s5_views_styleplugin_scrollbox.module
files[] = theme/s5_views_styleplugin_scrollbox.theme.inc
files[] = s5_views_styleplugin_scrollbox_plugin_style.handler.inc
files[] = s5_views_styleplugin_scrollbox.views.inc
s5_views_styleplugin_scrollbox.info
Реализация hook_views_api
function s5_views_styleplugin_scrollbox_views_api() {
return array(
'api' => '3.0-alpha1',
);
}
Реализация hook_views_plugins, объявление
плагинов.
function s5_views_styleplugin_scrollbox_views_plugins() {
return array(
'style' => array(
's5_views_styleplugin_scrollbox' => array(
'title' => t('Scroll Box S5'),
'help' => t('Display the results as a slideshow.'),
'handler' => 's5_views_styleplugin_scrollbox_plugin_style',
'uses options' => TRUE,
'uses fields' => TRUE,
'uses row plugin' => TRUE,
'uses grouping' => FALSE,
'type' => 'normal',
'parent' => 'list',
'path' => drupal_get_path('module', 's5_views_styleplugin_scrollbox'),
'theme' => 's5_views_styleplugin_scrollbox_theme',
'theme path' =>
drupal_get_path('module', 's5_views_styleplugin_scrollbox') . '/theme',
'theme file' => 's5_views_styleplugin_scrollbox.theme.inc',
),
),
);
}
Реализация плагинов
class s5_views_styleplugin_scrollbox_plugin_style extends views_plugin_style {
//Обработка вывода.
function render() {
...
}
//Параметры по умолчанию.
function option_definition() {
...
}
//Форма параметров.
function options_form(&$form, &$form_state) {
...
}
}
Вот вам и ООП в Drupal
Работа классов уже реализовано в базовых классах.
Необходимую логику работы выполняем путём перегрузки базовых классов
Реализация функции предварительной
обработки шаблонов
<?php
/*
* Обрабатываем данные, которые поступают
* в шаблон.
*/
function template_preprocess_s5_views_styleplugin_scrollbox_theme(&$vars) {
//print_r($vars);
}
?>
Реализация шаблона вывода
<div class="s5_views_styleplugin_scrollbox">
<?php if (!empty($title)): ?>
<<?php print $group_element; ?><?php print drupal_attributes($group_attributes); ?>>
<?php print $title; ?>
</<?php print $group_element; ?>>
<?php endif; ?>
<?php if (!empty($list_element)): ?>
<<?php print $list_element; ?><?php print drupal_attributes($list_attributes); ?>>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<?php if (!empty($row_element)): ?>
<<?php print $row_element; ?><?php print drupal_attributes($row_attributes[$id]); ?>>
<?php endif; ?>
<?php print $row; ?>
<?php if (!empty($row_element)): ?>
</<?php print $row_element; ?>>
<?php endif; ?>
<?php endforeach; ?>
<?php if (!empty($list_element)): ?>
</<?php print $list_element; ?>>
<?php endif; ?>
</div>
Суть моего шаблона
<script language="JavaScript">
jQuery(document).ready(function(){
jQuery('.s5_views_styleplugin_scrollbox').s5_tinyscrollbar({
'axis':'<?php echo $options['axis'] ?>',
'wheel':'<?php echo $options['wheel'] ?>',
'scroll':'<?php echo $options['scroll'] ?>',
'size':'<?php echo $options['size'] ?>',
'sizethumb':'<?php echo $options['sizethumb'] ?>',
});
});
</script>
Форма настройки данного плагина
Добавляем настройки плагина
function option_definition() {
$options = parent::option_definition();
$options['axis'] = array('default' => 'x');
...
return $options;
}
function options_form(&$form, &$form_state) {
$form['axis'] = array(
'#type' => 'radios',
'#title' => t('Axis'),
'#options' => array('x' => 'x', 'y' => 'y'),
'#default_value' => $this->options['axis']==''?'x':$this->options['axis'],
'#description' => t('vertical or horizontal scroller? "x" or "y" .'),
);
….
}
Views c данными. Плагин – HTML list
Views c нашим плагином
Материалы:
●Starting Views 2 Documentation
http://groups.drupal.org/node/10129
●Views 2 - Writing plugins, handlers, and supporting new tables
http://drupaldojo.com/session/views-2-writing-plugins-handlers-and-supporting-new-tables
●Написание плагинов «стиля» и «рядка» для Views 2(Перевод статьи
”Starting Views 2 Documentation”).
http://vlikin.blogspot.com/2011/03/views-2.html
Материалы по докладу будут выложены по адресу
http://vlikin.blogspot.com/2011/06/drupalcamp-kyiv-2011-views-views.html
Контакты:
Виктор, Витя, Витьок.
Блог: vlikin.blogspot.com
Почта: viktor.likin@gmail.com

More Related Content

DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views - написание плагинов.

  • 1. Views - стандарт вывода списка данных. Расширение Views - написание плагинов DrupalCamp Kyiv 2011
  • 2. Views – это лишнее, или технологии движут человечество!? PHP СУБД Drupal Views Всё так просто! Всё можно написать на PHP, используя MySQL. Ничего лишнего. Сколько реально надо знать!
  • 3. Виды вывода данных Роль Views ●Вывод элемента. Вывод материала. ●Вывод множества однотипной информации. Список – Views. ●Вывод множества разнотипной информации. Blocks(Блоки), Panels(Панели).
  • 4. Вывод множества разнотипной информации Blocks(Блоки), Panels(Панели)
  • 5. Вывод множества однотипной информации Список – Views Основная область Область стиля Заголовок, подвал Стиль рядка
  • 6. Способы возможной реализации бизнес логики ●Написание отдельного модуля, реализующий получение и темизацию данных без использования Views. ●Перегрузка тем существующих Views. ●Создание модуля, реализирующего различные плагины для Views, с возможностью дальнейшего использования возможностей Drupal: хуки, препроцессинг, перегрузка тем.
  • 7. ●Реализация hook_views_api, ●Реализация hook_views_plugins, объявление плагинов. ●Реализация плагинов. ●Реализация функций предварительной обработки шаблонов. ●Реализация шаблонов .tpl.php. Завершённый плагин стиля состоит из компонентов:
  • 9. Определение дополнительных файлов, используемых в module.info ... files[] = s5_views_styleplugin_scrollbox.module files[] = theme/s5_views_styleplugin_scrollbox.theme.inc files[] = s5_views_styleplugin_scrollbox_plugin_style.handler.inc files[] = s5_views_styleplugin_scrollbox.views.inc s5_views_styleplugin_scrollbox.info
  • 11. Реализация hook_views_plugins, объявление плагинов. function s5_views_styleplugin_scrollbox_views_plugins() { return array( 'style' => array( 's5_views_styleplugin_scrollbox' => array( 'title' => t('Scroll Box S5'), 'help' => t('Display the results as a slideshow.'), 'handler' => 's5_views_styleplugin_scrollbox_plugin_style', 'uses options' => TRUE, 'uses fields' => TRUE, 'uses row plugin' => TRUE, 'uses grouping' => FALSE, 'type' => 'normal', 'parent' => 'list', 'path' => drupal_get_path('module', 's5_views_styleplugin_scrollbox'), 'theme' => 's5_views_styleplugin_scrollbox_theme', 'theme path' => drupal_get_path('module', 's5_views_styleplugin_scrollbox') . '/theme', 'theme file' => 's5_views_styleplugin_scrollbox.theme.inc', ), ), ); }
  • 12. Реализация плагинов class s5_views_styleplugin_scrollbox_plugin_style extends views_plugin_style { //Обработка вывода. function render() { ... } //Параметры по умолчанию. function option_definition() { ... } //Форма параметров. function options_form(&$form, &$form_state) { ... } } Вот вам и ООП в Drupal Работа классов уже реализовано в базовых классах. Необходимую логику работы выполняем путём перегрузки базовых классов
  • 13. Реализация функции предварительной обработки шаблонов <?php /* * Обрабатываем данные, которые поступают * в шаблон. */ function template_preprocess_s5_views_styleplugin_scrollbox_theme(&$vars) { //print_r($vars); } ?>
  • 14. Реализация шаблона вывода <div class="s5_views_styleplugin_scrollbox"> <?php if (!empty($title)): ?> <<?php print $group_element; ?><?php print drupal_attributes($group_attributes); ?>> <?php print $title; ?> </<?php print $group_element; ?>> <?php endif; ?> <?php if (!empty($list_element)): ?> <<?php print $list_element; ?><?php print drupal_attributes($list_attributes); ?>> <?php endif; ?> <?php foreach ($rows as $id => $row): ?> <?php if (!empty($row_element)): ?> <<?php print $row_element; ?><?php print drupal_attributes($row_attributes[$id]); ?>> <?php endif; ?> <?php print $row; ?> <?php if (!empty($row_element)): ?> </<?php print $row_element; ?>> <?php endif; ?> <?php endforeach; ?> <?php if (!empty($list_element)): ?> </<?php print $list_element; ?>> <?php endif; ?> </div>
  • 15. Суть моего шаблона <script language="JavaScript"> jQuery(document).ready(function(){ jQuery('.s5_views_styleplugin_scrollbox').s5_tinyscrollbar({ 'axis':'<?php echo $options['axis'] ?>', 'wheel':'<?php echo $options['wheel'] ?>', 'scroll':'<?php echo $options['scroll'] ?>', 'size':'<?php echo $options['size'] ?>', 'sizethumb':'<?php echo $options['sizethumb'] ?>', }); }); </script>
  • 17. Добавляем настройки плагина function option_definition() { $options = parent::option_definition(); $options['axis'] = array('default' => 'x'); ... return $options; } function options_form(&$form, &$form_state) { $form['axis'] = array( '#type' => 'radios', '#title' => t('Axis'), '#options' => array('x' => 'x', 'y' => 'y'), '#default_value' => $this->options['axis']==''?'x':$this->options['axis'], '#description' => t('vertical or horizontal scroller? "x" or "y" .'), ); …. }
  • 18. Views c данными. Плагин – HTML list
  • 19. Views c нашим плагином
  • 20. Материалы: ●Starting Views 2 Documentation http://groups.drupal.org/node/10129 ●Views 2 - Writing plugins, handlers, and supporting new tables http://drupaldojo.com/session/views-2-writing-plugins-handlers-and-supporting-new-tables ●Написание плагинов «стиля» и «рядка» для Views 2(Перевод статьи ”Starting Views 2 Documentation”). http://vlikin.blogspot.com/2011/03/views-2.html Материалы по докладу будут выложены по адресу http://vlikin.blogspot.com/2011/06/drupalcamp-kyiv-2011-views-views.html
  • 21. Контакты: Виктор, Витя, Витьок. Блог: vlikin.blogspot.com Почта: viktor.likin@gmail.com