Warp 7 framework

Warp 7: виджеты / модули

Joomla

Добавление новой позиции для модулей или виджетов очень простое. Вам необходимо задать имя позиции и определить, где должна отображаться позиция в макете шаблона.

Добавление новой позиции

Добавьте новую позицию в 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;?>
Оригинальная статья:
Dmitry Rekun
Работаю в банковской сфере, а с веб-разработкой (непосредственно с Joomla) столкнулся в 2007 году. Теперь это моё хобби и время от времени вторая работа. Какое-то время вёл свой блог, но решил попробовать работать в команде. И вот c 2012 года я здесь :)