Сегодня речь пойдет о том, как создать style плагин для модуля Panels. Styles плагины, как и layouts плагины принято подключать через тему оформления, но можно и через модуль.
Подключение style плагина через тему оформления
Примерная структура каталогов будет следующей:
themeName
panels
styles
first_style
first_style.css
first_style.inc
first-style-shadow-box.tpl.php
Первым делом открываем themeName.info и добавляем туда следующую строку:
plugins[panels][styles] = panels/styles
Этой строкой мы указали путь к каталогу, в котором будут находится наши styles плагины (не забываем почистить кэш после добавления данной строки). Теперь нам необходимо в корне темы создать каталог panels, а внутри него каталог styles. Все наши styles плагины будут находится в этом каталоге.
Переходим непосредственно к созданию первого плагина. Идем в каталог styles и создаем каталог "first_style". Далее заходим в этот каталог и создаем в нем файл first_style.inc. Содержимого этого файла:
<?php
$plugin = array(
'title' => t('Shadow box'), // Название плагина.
'description' => t('The output a content pane with shadow.'), // Описание плагина.
'render pane' => 'first_style_shadow_render_pane', // Функция, которая будет выводить содержимое.
'hook theme' => array(
'first_style_shadow_box' => array(
'variables' => array('content' => NULL), // Список переменных, которые может принимать функция.
'path' => drupal_get_path('theme', 'themeName') . '/plugins/styles/first_style', // Путь к плагину.
'template' => 'first-style-shadow-box', // Название шаблона.
),
),
);
function theme_first_style_shadow_render_pane($vars) {
$content = $vars['content'];
$pane = $vars['pane'];
$display = $vars['display'];
if (empty($content->content)) {
return;
}
// Формируем содержимое стандартной функцией theme_panels_pane.
$output = theme('panels_pane', array('content' => $content, 'pane' => $pane, 'display' => $display));
// Формируем содержимое нашей функцией theme_first_style_shadow_box.
$output = theme('first_style_shadow_box', array('content' => $output));
// Подключаем файл со стилями.
drupal_add_css(drupal_get_path('theme', 'themeName') . '/panels/styles/first_style/first_style.css');
return $output;
}
Теперь необходимо создать шаблон first-style-shadow-box.tpl.php. Он очень похож на любой другой файл шаблона. Его содержимое:
<div class="first-style-shadow-box">
<?php print $content; ?>
</div>
Затем необходимо создать first_style.css. Этот файл ничем не отличается от других css файлов. Его содержимое:
.first-style-shadow-box {
box-shadow: 0 0 5px #000;
}
Все, наш плагин готов к использованию.
Подключение style плагина через модуль
Примерная структура каталогов будет следующей:
style_sample
style_sample.info
style_sample.module
plugins
styles
first_style
first_style.css
first_style.inc
first-style-shadow-box.tpl.php
Создаем в каталоге sites/all/modules каталог style_sample. Внутри него создаем файл style_sample.info. Содержимое этого файла:
name = Style Sample
description = Style plugin example.
core = 7.x
package = "Panels"
dependencies[] = panels
Затем создаем файл style_sample.module. Его содержимое:
<?php
/**
* Implements hook_ctools_plugin_directory().
*/
function style_sample_ctools_plugin_directory($module, $plugin) {
if ($module == 'panels') {
return 'plugins/styles';
}
}
Дальнейший процесс аналогичен подключению плагина через тему, с небольшими правками в файле first_style.inc.
Более подробный процесс создания style плагина в своем модуле можно прочитать в этом уроке.