0
Developing for Panels
CTools Plugins

Vadim Malai
Drupal Developer
wearepropeople.com

vadim.malai@wearepropeople.com
Panels Layouts

wearepropeople.com
Метод “Click-a”

wearepropeople.com
Где ?

wearepropeople.com
Как это выглядит ?

wearepropeople.com
Структура

wearepropeople.com
Опции

wearepropeople.com
Пример и Результат

wearepropeople.com
Из кода

wearepropeople.com
Декларация в модуле

function my_layout_ctools_plugin_directory($owner, $plugin_type) {
// Создайте папку 'plugins' в моду...
В .info Файл-е Темы

; Panels layouts. Можете создать несколько папок в папке "layouts", каждая из
которых будет содержать...
Декларация Макета
my_layout.inc
$plugin = array(
'title' => t('Layout Title'),
'category' => t('Layout Category'),
'icon' ...
Вывод регионов
my_layout.tpl.php
Доступные Переменные:
* - $content: Массив с содержимым
* - $css_id: Уникальный идентифик...
Region / Pane Styles

wearepropeople.com
Декларация в модуле

function module_ctools_plugin_directory($owner, $plugin_type) { if ($owner
== 'panels') { return "plu...
В .info Файл-е Темы

; Panels styles. Можете создать несколько папок в папке "styles", каждая из
которых будет содержать ф...
Декларация Стиля
$plugin = array(
'title' => t('Style Title'),
'description' => t('Style Description.'),
'render region' =...
Настройки Стилей

function module_raw_region_settings_form($style_settings) {
$style_settings // Array with previous selec...
Настройка вывода
function theme_panels_extra_styles_wrapper_render_region($vars) {
$panes = $vars['panes']; // Panes from ...
Ctools Content Types

wearepropeople.com
Декларация Content Panes

function module_ctools_plugin_directory($owner, $plugin_type) { if ($owner
== 'ctools' && $plugi...
Декларация Plugin-a
$plugin = array(
'single' => TRUE,
'title' => t('Title'),
'description' => t('Description'),
'category...
Настройки
function module_edit_form($form, &$form_state) {
$conf = $form_state['conf'];
// Implements Form API return $for...
Вывод Content-a
function module_render($subtype, $conf, $args, $contexts) { if
(!empty($contexts)) {
$content = ctools_con...
Плагин Доступа

wearepropeople.com
Декларация Плагина Доступа

function custom_module_ctools_plugin_directory($module, $plugin) {
if ($module == 'ctools' && ...
Декларация Плагина
$plugin = array(
'title' => t('Title'),
'description' => t('Description'),
'callback' => 'module_custom...
Настройки Плагина
function module_custom_ctools_settings($form, &$form_state, $conf) {
// Implements Form API return $form...
Разрешение на Вывода

function module_custom_ctools_access_check($conf, $context) {
$context; // Context of row input

$co...
wearepropeople.com
wearepropeople.com
Upcoming SlideShare
Loading in...5
×

Вадим Малай - Developing for Panels. CTools Plugins.

171

Published on

Published in: Technology, Art & Photos
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
171
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Вадим Малай - Developing for Panels. CTools Plugins."

  1. 1. Developing for Panels CTools Plugins Vadim Malai Drupal Developer wearepropeople.com vadim.malai@wearepropeople.com
  2. 2. Panels Layouts wearepropeople.com
  3. 3. Метод “Click-a” wearepropeople.com
  4. 4. Где ? wearepropeople.com
  5. 5. Как это выглядит ? wearepropeople.com
  6. 6. Структура wearepropeople.com
  7. 7. Опции wearepropeople.com
  8. 8. Пример и Результат wearepropeople.com
  9. 9. Из кода wearepropeople.com
  10. 10. Декларация в модуле function my_layout_ctools_plugin_directory($owner, $plugin_type) { // Создайте папку 'plugins' в модуле и ставьте .inc файл туда. if ($owner == 'panels' && $plugin_type == 'layouts') { return "plugins/$plugin_type"; }} wearepropeople.com
  11. 11. В .info Файл-е Темы ; Panels layouts. Можете создать несколько папок в папке "layouts", каждая из которых будет содержать файлы макетов Panels. plugins[panels][layouts] = plugins/layouts wearepropeople.com
  12. 12. Декларация Макета my_layout.inc $plugin = array( 'title' => t('Layout Title'), 'category' => t('Layout Category'), 'icon' => 'my_layout_icon.png', 'theme' => 'my_layout', //Соответствует с названием файла 'css' => 'my_layout.css', 'regions' => array( 'feature' => t('Feature'), // Найменование Регионов ), ); wearepropeople.com
  13. 13. Вывод регионов my_layout.tpl.php Доступные Переменные: * - $content: Массив с содержимым * - $css_id: Уникальный идентификатор. * - $panel_prefix: Обёртка макета. * - $panel_suffix: wearepropeople.com
  14. 14. Region / Pane Styles wearepropeople.com
  15. 15. Декларация в модуле function module_ctools_plugin_directory($owner, $plugin_type) { if ($owner == 'panels') { return "plugins/$plugin_type"; } } wearepropeople.com
  16. 16. В .info Файл-е Темы ; Panels styles. Можете создать несколько папок в папке "styles", каждая из которых будет содержать файлы стилей Panels. plugins[panels][styles] = plugins/styles wearepropeople.com
  17. 17. Декларация Стиля $plugin = array( 'title' => t('Style Title'), 'description' => t('Style Description.'), 'render region' => 'module_render_region', 'render pane' => 'module_render_pane', 'settings form' => 'module_raw_region_settings_form', 'pane settings form' => 'module_raw_pane_settings_form', ); wearepropeople.com
  18. 18. Настройки Стилей function module_raw_region_settings_form($style_settings) { $style_settings // Array with previous selected settings // Implements Form API return $form; } wearepropeople.com
  19. 19. Настройка вывода function theme_panels_extra_styles_wrapper_render_region($vars) { $panes = $vars['panes']; // Panes from region. $settings = $vars['settings']; // Style Settings. $content = $vars[’content’]; // Pane Item Settings. // Some magic happens. return $output; } wearepropeople.com
  20. 20. Ctools Content Types wearepropeople.com
  21. 21. Декларация Content Panes function module_ctools_plugin_directory($owner, $plugin_type) { if ($owner == 'ctools' && $plugin_type == 'content_types') { return 'plugins/' . $plugin_type; } } wearepropeople.com
  22. 22. Декларация Plugin-a $plugin = array( 'single' => TRUE, 'title' => t('Title'), 'description' => t('Description'), 'category' => t('Category'), 'edit form' => 'module_edit_form', 'render callback' => 'module_render', 'admin info' => 'module_admin_info', 'defaults' => array( ), 'all contexts' => TRUE, ); wearepropeople.com
  23. 23. Настройки function module_edit_form($form, &$form_state) { $conf = $form_state['conf']; // Implements Form API return $form; } function module_edit_form_submit(&$form, &$form_state) { foreach (array_keys($form_state['plugin']['defaults']) as $key) { $form_state['conf'][$key] = $form_state['values'][$key]; } } wearepropeople.com
  24. 24. Вывод Content-a function module_render($subtype, $conf, $args, $contexts) { if (!empty($contexts)) { $content = ctools_context_keyword_substitute($conf['text'], array(), $contexts); } $block = new stdClass(); $block->title = t('This is my title!'); $block->content = $content; return $block; } wearepropeople.com
  25. 25. Плагин Доступа wearepropeople.com
  26. 26. Декларация Плагина Доступа function custom_module_ctools_plugin_directory($module, $plugin) { if ($module == 'ctools' && !empty($plugin)) { } } wearepropeople.com return "plugins/$plugin";
  27. 27. Декларация Плагина $plugin = array( 'title' => t('Title'), 'description' => t('Description'), 'callback' => 'module_custom_ctools_access_check', 'default' => array('some_value' => 0), 'settings form' => 'module_custom_ctools_settings', 'summary' => 'module_custom_ctools_summary', 'required context' => new ctools_context_required(t('Node'), 'node), ); wearepropeople.com
  28. 28. Настройки Плагина function module_custom_ctools_settings($form, &$form_state, $conf) { // Implements Form API return $form; } function module_custom_ctools_summary($conf, $context) { // Return Summary } wearepropeople.com
  29. 29. Разрешение на Вывода function module_custom_ctools_access_check($conf, $context) { $context; // Context of row input $conf; // Entered Settings return FALSE; // Access Denied return TRUE; // Allow Access } wearepropeople.com
  30. 30. wearepropeople.com
  31. 31. wearepropeople.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×