Сегодня я покажу как создать layout плагин для модуля Panels. Layouts плагины принято подключать через тему оформления, но можно и через модуль.
Подключение layout плагина через тему оформления
Примерная структура каталогов будет следующей:
themeName
panels
layouts
first_layout
first_layout.css
first_layout.inc
first_layout.png
layout-sample-first-layout.tpl.php
Первым делом открываем themeName.info и добавляем туда следующую строку:
plugins[panels][layouts] = panels/layouts
Этой строкой мы указали путь к каталогу, в котором будут находится наши плагины (не забываем почистить кэш после добавления данной строки). Теперь нам необходимо в корне темы создать каталог panels, а внутри него каталог layouts. Все наши layouts плагины будут находится в этом каталоге.
Переходим непосредственно к созданию первого плагина. Идем в каталог layouts и создаем каталог "first_layout". Далее заходим в этот каталог и создаем в нем файл first_layout.inc. Содержимого этого файла:
<?php
$plugin = array(
'title' => t('First Layout'), // Название плагина.
'icon' => 'first_layout.png', // Графическое представление плагина. Используется для демонстрации регионов при выборе макета.
'theme' => 'layout_sample_first_layout', // Шаблон плагина. При создании шаблона все подчеркивания необходимо заменить на тирэ.
'css' => 'first_layout.css', // CSS файл, содержащий стили для нашего плагина при отображении и редактировании панели.
'admin css' => 'first_layout_admin.css', // Этот CSS файл особенно полезен. Он подключается только в административных разделах сайта, что позволяет избежать некоторых проблем с отображением панели.
'regions' => array(
'main' => t('Main region'), // Объявление "main" региона.
'right' => t('Right region'), // Оъявление "right" региона.
),
);
Теперь необходимо создать шаблон layout-sample-first-layout.tpl.php. Он очень похож на любой другой файл шаблона. Его содержимое:
<div class="panel-display clearfix" <?php if (!empty($css_id)) { print "id=\"$css_id\""; } ?>>
<div id="content"><div class="section clearfix">
<?php print $content['main']; ?>
</div></div>
<div id="right"><div class="section clearfix">
<?php print $content['right']; ?>
</div></div>
</div>
Затем необходимо создать first_layout.css. Этот файл ничем не отличается от других css файлов. Его содержимое:
#content {
width: 100%;
float: left;
margin: 0 -100% 0 0;
}
#content > .section {
margin: 0 280px 0 0;
}
#right {
width: 280px;
float: right;
}
Далее рисуем графическое представление плагина. Называем его first_layout.png.
Все, наш плагин готов к использованию.
Подключение layout плагина через модуль
Примерная структура каталогов будет следующей:
layout_sample
layout_sample.info
layout_sample.module
plugins
layouts
first_layout
first_layout.css
first_layout.inc
first_layout.png
layout-sample-first-layout.tpl.php
Создаем в каталоге sites/all/modules каталог layout_sample. Внутри него создаем файл layout_sample.info. Содержимое этого файла:
name = Layout Sample
description = Layout plugin example.
core = 7.x
package = "Panels"
dependencies[] = panels
Затем создаем файл layout_sample.module. Его содержимое:
<?php
/**
* Implements hook_ctools_plugin_directory().
*/
function layout_sample_ctools_plugin_directory($module, $plugin) {
if ($module == 'panels' && $plugin == 'layouts') {
return 'plugins/layouts';
}
}
Дальнейший процесс аналогичен подключению плагина через тему.