Добавление новой позиции для модулей или виджетов очень простое. Вам необходимо задать имя позиции и определить, где должна отображаться позиция в макете шаблона.
Добавление новой позиции
Добавьте новую позицию в templateDetails.xml для Joomla или в theme.xml для WordPress, чтобы ваша CMS могла знать о том, что позиция существует. В настройках шаблона отобразится новая опция.
<position>top-a</position>
<position>MY-POSITION</position>
<position>bottom-a</position>
Добавление настроек
С помощью атрибута settings
вы можете контролировать опции отображения модуля/виджета в вашей позиции. Вы можете найти их в панели Модули/Виджеты настроек вашего шаблона. Доступные значения: class
, style
, icon
, badge
и display
. Для WordPress также доступны title
и assignment
.
<!-- all option are available -->
<position>MY-POSITION</position>
<!-- no option are available -->
<position settings="">MY-POSITION</position>
<!-- only the style and badge options are available -->
<position settings="style badge">MY-POSITION</position>
Если атрибут settings
не задан, ваша позиция автоматические покажет все доступные опции. Если вы используете атрибут settings
без значения, он вообще не отобразится в панели Модули или Виджеты.
Больше информации о settings
вы можете получить в материале Настройки модулей / виджетов.
Настройки шаблона для позиций
Для добавления опций позиции в панель Settings and Layouts настроек шаблона отредактируйте файл config.xml.
Установите виджет по умолчанию для вашей позиции
При добавлении нового элемента <row>
в поле таблицы panel_default
в разделе Settings, ваша позиция получит опцию для выбора стиля по умолчанию.
<fields name="Settings">
...
<field type="table" name="panel_default">
<rows label="Position">
<row>MY-POSITION</row>
...
Установите макет по умолчанию для вашей позиции
При добавлении нового элемента <row>
в поле таблицы grid
в разделе Layouts, ваша позиция получит опции для установки макета, поведения responsive и разделителя.
<fields name="Layouts">
...
<field type="table" name="grid">
<rows label="Position">
<row>MY-POSITION</row>
...
Больше информации вы найдете в материале Config.xml.
Рендеринг позиции
Файл /layouts/theme.php предоставляет базовую разметку шаблона. В нем вы можете определить, где должны отображаться виджеты, а также можете добавить новые.
<?php if ($this['widgets']->count('MY-POSITION')):?>
<section class="uk-grid" data-uk-grid-match="{target:'> div > .uk-panel'}">
<?php echo $this['widgets']->render('MY-POSITION', array('layout'=>$this['config']->get(
'grid.MY-POSITION.layout'))); ?>
</section>
<?php endif;?>
Все что нужно сделать, это добавить код $this['config']->get('grid.MY-POSITION.layout')
, если вы объявили опцию в config.xml.
Больше информации вы найдете в статье Макет шаблона.
Продвинутый путь для добавления CSS классов
Если ваша позиция объявлена как новый элемент <row>
в поле таблицы grid
в файле config.xml, мы предоставляем простой путь для добавления CSS классов. Просто добавьте <?php echo $grid_classes['MY-POSITION']; ?>
в ваш атрибут class
. Это даст вашей позиции опции для установки макета, поведения responsive и разделителя.
<?php if ($this['widgets']->count('MY-POSITION')) : ?>
<section class="<?php echo $grid_classes['MY-POSITION']; ?>" data-uk-grid-match="{target:'> div > .uk-panel'}"
data-uk-grid-margin><?php echo $this['widgets']->render('MY-POSITION', array('layout'=>
$this['config']->get('grid.MY-POSITION.layout'))); ?></section>
<?php endif; ?>
<?php if ($this['widgets']->count('MY-POSITION')):?>
<section class="uk-grid" data-uk-grid-match="{target:'> div > .uk-panel'}">
<?php echo $this['widgets']->render('MY-POSITION', array('layout'=>$this['config']->get(
'grid.MY-POSITION.layout'))); ?>
</section>
<?php endif;?>