Современные шаблоны не страдают малым количеством позиции для модулей. И всё же, как добавляется новая позиция модуля на сайт на 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 нужна редко, однако её решение позволяет лучше изучить и понять устройство системы и принцип создания шаблонов.