Своя позиция модуля на сайте Joomla

Современные шаблоны не страдают малым количеством позиции для модулей. И всё же, как добавляется новая позиция модуля на сайт на Jooml’e.

Задача, решаемая в этой статье по формулировке простая. Есть шаблон Joomla со своими позициями модулей. Нужно добавить дополнительно, свою позицию для модуля.

В статье рассматриваются два способа. Один способ для шаблонов использующих Joomla функции, второй для шаблонов, написанных на «чистом» PHP.

Подготовка

  • Для безопасности предварительно делаем резервную копию сайта.
  • Для работ понадобится текстовой редактор, использую Notepad++ и программа FTP клиент.
  • Сайт на время работ лучше отключить на вкладке Общие настройки.

Пример 1

Имеем стандартный шаблон Joomla на Фреймворке типа Helix. Хочу добавить пользовательскую позицию модуля под названием «Hello!». При этом поместить позицию модуля «Hello!» я хочу под шапкой сайта.

Этапы работ

Шаг 1. Редактирование файла templateDetails.xml

Забираем файл из шаблона через FTP и открываем в текстовом редакторе.

Видим в файле строки с существующими позициями модулей.

Добавляем в конце этого списка свою позицию:

<position>hello</position>

Возвращаем файл на место.

Шаг 2. Редактирование файла index.php

Забираем по FTP файл index.php рабочего шаблона.

В текстовом редакторе в нужном месте, в данном примере перед тегом <header>, вставляем такую строку 

<jdoc:include type="modules" name="hello" style="" />

Можно задать свой style (в кавычках указать произвольное название стиля) для модулей этой позиции, прописав стиль в файле каскадных стилей шаблона.

Сохраняем файл и возвращаем на место.

Всё! Новая позиция hello для модулей добавлена.

Пример 2

На Фреймворке Wamp (чистый php) работает все иначе:

В файл «templateDetails.xml» добавьте позицию модуля

<position>hello</ position>

В файл «config.xml» добавьте элемент <row>hello</ row>

В файл /layouts/theme.php добавьте функцию для нового модуля в нужное место шаблона, в данном случае в нижнем колонтитуле:

<?php if ($this['widgets']->count('hello')) : ?>
             <section id="tm-hello" class="<?php echo $grid_classes['hello']; echo $display_classes['hello']; ?>" data-uk-grid-match="{target:'> div > .uk-panel'}"data-uk-grid-margin><?php echo $this['widgets']->render('hello', array('layout'=>$this['config']->get('grid.hello.layout'))); ?></section>
<?php endif; ?>

Всё. Позиция модуля добавлена.

Вывод

Своя позиция модуля на сайт Joomla нужна редко, однако её решение позволяет лучше изучить и понять устройство системы и принцип создания шаблонов.