Основу шаблона составляет файл index.php. Он включает в себя вызовы Joomla-позиции через функцию jdoc:include. Например: <jdoc:include type="modules" name="sidebar" />
. Эти позиции задаются в админке при назначении модулей. Логика шаблона полностью зависит от структуры этого файла: размещение заголовков, меню, футера и т. д.
Файл templateDetails.xml содержит блоки <files>, <positions>, <languages>, <params>. В разделе <positions> необходимо указать все имена позиций, используемых в index.php. В разделе <files> прописываются все файлы шаблона, включая изображения, CSS и скрипты. Отсутствие хотя бы одного ресурса, указанного в этом разделе, приведёт к ошибке установки.
CSS-файлы подключаются напрямую в index.php, чаще всего через $this->baseurl
или JUri::base()
. Поддержка адаптивности реализуется стандартными средствами CSS или через фреймворки (например, Bootstrap, встроенный в Joomla 4). JS-файлы можно подключать аналогичным способом, но предпочтительно использовать API Joomla для предотвращения конфликтов.
Шаблон может содержать параметры, которые задаются в templateDetails.xml в блоке <params>. Это позволяет администратору менять, например, цветовую схему, логотип или текст подвала без редактирования кода. Получение параметров в шаблоне осуществляется через $this->params->get('имя_параметра')
.
Для локализации создаётся файл ru-RU.tpl_имя_шаблона.ini в папке language/ru-RU. Он содержит строки вида TPL_ИМЯ_ПАРАМЕТРА="Значение"
. Эти значения подставляются в интерфейсе при редактировании параметров шаблона в панели управления.
Шаблон упаковывается в архив ZIP, структура которого повторяет размещение файлов в папке templates. Установка производится через стандартный установщик расширений Joomla. После этого шаблон можно назначить по умолчанию или только для отдельных страниц сайта.
Структура файлов и папок пользовательского шаблона Joomla
Папка шаблона размещается в /templates/название_шаблона/
. В ней должны присутствовать обязательные файлы и директории, определяющие внешний вид и работу шаблона.
index.php |
Главный файл шаблона. Содержит разметку и вызовы модулей через jdoc:include . |
templateDetails.xml |
Манифест установки. Определяет метаинформацию, файлы, позиции модулей и скрипты. |
component.php |
|
error.php |
Отвечает за отображение страницы ошибок (например, 404). |
favicon.ico |
Значок сайта. Не обязателен, но рекомендуется. |
Рекомендуемые директории внутри шаблона:
css/ |
Стили оформления. Основной файл – template.css или style.css . |
js/ |
Скрипты. Следует минимизировать количество и размер файлов. |
images/ |
Графика, используемая только в шаблоне. |
html/ |
|
language/ |
Файлы перевода шаблона. Именование – название_шаблона.lang_code.ini . |
Имена файлов и папок должны быть в нижнем регистре, без пробелов. Необходимо строго соблюдать структуру, иначе шаблон не будет корректно установлен или отображён.
Создание файла index.php с базовой разметкой шаблона
Минимальный рабочий пример разметки:
<?php
defined('_JEXEC') or die;
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<jdoc:include type="head" />
</head>
<body>
<div id="container">
<header>
<jdoc:include type="modules" name="top" style="none" />
</header>
<nav>
<jdoc:include type="modules" name="menu" style="none" />
</nav>
<main>
<jdoc:include type="component" />
</main>
<aside>
<jdoc:include type="modules" name="sidebar" style="none" />
</aside>
<footer>
<jdoc:include type="modules" name="footer" style="none" />
</footer>
</div>
</body>
</html>
Ключевые моменты:
- Проверка
defined('_JEXEC')
обязательна для безопасности. <jdoc:include type="head" />
подключает мета-данные, стили и скрипты.- Блоки
modules
с указанием позиции соответствуют названиям, заданным вtemplateDetails.xml
.
Имена позиций (например, top
, menu
, sidebar
) произвольные, но должны быть согласованы с разметкой XML-шаблона.
Файл templateDetails.xml
размещается в корне папки шаблона и необходим Joomla для идентификации и установки шаблона. Его структура строго определена и должна соответствовать требованиям системы.
Минимальный набор обязательных элементов включает <name>
, <type>
, <version>
, <creationDate>
, <author>
, <authorEmail>
, <description>
, <files>
. Значение тега <type>
всегда должно быть template
.
Указывайте актуальную версию Joomla в <version>
, чтобы избежать предупреждений при установке. Например: <version>5.0.0</version>
.
Блок <files>
содержит список всех файлов шаблона. Каждый файл добавляется через <filename>
. Для подкаталогов используйте folder="true"
, например: <filename folder="true">css</filename>
.
Добавьте секцию <positions>
с перечислением позиций модулей. Каждая позиция оформляется отдельным тегом <position>
. Названия позиций должны совпадать с используемыми в макете шаблона.
Для поддержки настройки параметров через интерфейс шаблона укажите <config>
с атрибутом path
, ссылающимся на файл конфигурации, например: <config path="config.xml"/>
.
Чтобы шаблон корректно отображался в списке установленных, в <name>
используйте латиницу без пробелов. Имя должно совпадать с названием папки шаблона.
После создания файла templateDetails.xml
, проверьте его на ошибки с помощью валидатора XML. Нарушения структуры приведут к отказу Joomla в установке шаблона.
Подключение CSS и JavaScript в шаблоне Joomla
Для подключения CSS и JavaScript в шаблоне Joomla используется объект $this внутри файла index.php шаблона. Все ресурсы следует добавлять через методы addStyleSheet и addScript объекта WebAssetManager, доступ к которому осуществляется через Factory::getApplication()->getDocument()->getWebAssetManager().
Пример подключения CSS:
<?php
use Joomla\CMS\Factory;
$wa = Factory::getApplication()->getDocument()->getWebAssetManager();
$wa->registerAndUseStyle('template.styles', 'templates/название_шаблона/css/style.css');
?>
Пример подключения JavaScript:
<?php
$wa->registerAndUseScript('template.scripts', 'templates/название_шаблона/js/script.js');
?>
Имена, указанные как ‘template.styles’ и ‘template.scripts’, должны быть уникальными внутри шаблона. Joomla автоматически добавляет версии файлов, если активирован кэш браузера, что облегчает обновление без принудительной очистки кэша.
Для загрузки библиотек из ядра Joomla, например jQuery, используйте:
$wa->useScript('jquery');
Не рекомендуется использовать прямые теги <link> и <script>, так как это нарушает управление зависимостями и приоритетами загрузки. Все скрипты и стили должны быть размещены в папке шаблона (обычно css и js), структура которой задаётся вручную.
Если требуется подключить скрипт только на определённых страницах, используйте условные операторы с объектом Input:
<?php
$app = Factory::getApplication();
$option = $app->input->getCmd('option');
$view = $app->input->getCmd('view');
if ($option === 'com_content' && $view === 'article') {
$wa->registerAndUseScript('template.article', 'templates/название_шаблона/js/article.js');
}
?>
В файле templateDetails.xml необходимо задать модульные позиции с помощью тега <positions>. Пример:
<positions>
<position>header</position>
<position>sidebar</position>
<position>footer</position>
</positions>
В файле index.php шаблона подключение модулей осуществляется через функцию jdoc:include с типом modules. Пример вставки модуля в шапку:
<jdoc:include type="modules" name="header" style="none" />
Атрибут style определяет способ обёртки модуля. Поддерживаются значения none, xhtml, html, table, bootstrap и пользовательские стили, определённые в mod_chrome.
<?php if ($this->countModules('sidebar')) : ?>
<jdoc:include type="modules" name="sidebar" style="xhtml" />
<?php endif; ?>
<jdoc:include type="component" />
Эта конструкция отвечает за загрузку компонента, соответствующего текущему маршруту. Обычно размещается в центральной части макета.
Чтобы задать структуру с несколькими колонками, используются div-контейнеры с соответствующей разметкой и проверками наличия модулей в каждой колонке. Это позволяет избежать пустых блоков и сохранить адаптивность.
Установка и активация шаблона через административную панель
Чтобы установить собственный шаблон в Joomla, предварительно упакуйте его в ZIP-архив с корректной структурой: в корне должны находиться файл templateDetails.xml
, а также директории с CSS, JS, изображениями и макетами.
- Авторизуйтесь в административной панели Joomla.
- Перейдите в раздел Расширения → Установка.
- Во вкладке «Загрузить файл пакета» выберите архив с шаблоном и нажмите «Загрузить и установить».
После завершения установки шаблон появится в списке доступных.
- Перейдите в Расширения → Шаблоны → Стиль.
- Найдите загруженный шаблон, установите галочку слева и нажмите кнопку «По умолчанию» на панели инструментов.
Если шаблон создан для административной части, включите фильтр «Администратор» в верхнем левом углу перед активацией.
- Проверьте наличие всех зависимостей, указанных в
templateDetails.xml
. - Если шаблон не отображается после активации, очистите кэш Joomla в разделе Система → Очистка кэша.
- Избегайте установки шаблонов с одинаковыми именами во избежание конфликтов.
Вопрос-ответ:
С чего начинать создание собственного шаблона для Joomla?
Прежде всего нужно определиться с тем, как будет выглядеть будущий сайт. Можно нарисовать макет вручную или с помощью графического редактора. Затем следует подготовить структуру шаблона: создать папку с названием шаблона, внутри неё разместить файлы index.php, templateDetails.xml, а также папки css, js и images. После этого можно приступать к разметке в index.php и подключению стилей и скриптов. Только после этого шаблон будет виден в панели управления Joomla и его можно будет активировать.
Можно ли обойтись без знания PHP при создании шаблона?
Да, базовый шаблон можно собрать, имея минимальные знания HTML и CSS. Однако, если требуется подключать модули, вставлять динамическое содержимое или использовать переменные Joomla, без базовых знаний PHP будет сложно. Joomla использует собственные функции и переменные, и их понимание заметно упрощает работу с шаблонами.
Что такое файл templateDetails.xml и зачем он нужен?
Этот файл описывает структуру шаблона для Joomla. В нём указывается название шаблона, автор, версия, а также перечисляются все файлы, входящие в шаблон. Кроме того, здесь настраиваются позиции модулей, которые потом можно будет использовать через панель управления. Без этого файла Joomla просто не распознает шаблон и не позволит его установить или активировать.
Как правильно задать позиции модулей в шаблоне?
Позиции задаются в двух местах: в файле templateDetails.xml и в самом шаблоне (обычно в index.php). В XML-файле нужно описать названия позиций, а в HTML-разметке указать, где именно они выводятся, с помощью команды `
Почему мой шаблон не отображается в списке шаблонов после загрузки?
Наиболее частая причина — ошибка в файле templateDetails.xml. Проверьте, правильно ли он оформлен, нет ли синтаксических ошибок или пропущенных обязательных тегов. Также стоит убедиться, что структура папок соответствует требованиям Joomla. Если файл XML отсутствует или оформлен с ошибками, система не сможет распознать шаблон как полноценный.