Разработка кастомного шаблона Joomla
Отметим: когда стандартный шаблон Joomla не соответствует дизайну макета или требованиям производительности, наша команда создаёт уникальное решение. Мы разрабатываем кастомные шаблоны под ключ: от анализа макета до финального деплоя. В работе используем Joomla 5, современные сборщики Vite и оптимизируем метрики Core Web Vitals. Типовая ситуация: клиент приносит макет в Figma с нестандартной сеткой, а готовый шаблон не поддерживает нужное расположение блоков. В результате — избыточный CSS, медленная загрузка и потеря позиций в выдаче. Мы решаем эту задачу с нуля, проектируя шаблон под конкретный дизайн. Через правильные кэши и асинхронную загрузку модулей добиваемся TTFB менее 200 мс. При разработке применяем TypeScript для сборки скриптов и SCSS для стилей — это даёт полный контроль над итоговым кодом.
С какими проблемами сталкиваются владельцы сайтов на Joomla?
- Готовые шаблоны часто имеют избыточный CSS, который замедляет загрузку. Типичный случай: LCP превышает 2.5 секунды из-за неоптимизированных стилей.
- Несоответствие дизайну — стандартные модульные сетки не позволяют реализовать сложные макеты. Клиент приносит макет в Figma, а шаблон не поддерживает нужное расположение блоков.
- Проблемы с обновлениями — многие доработанные шаблоны ломаются при обновлении Joomla. Мы используем дочерние шаблоны и переопределения layout, чтобы обновления проходили безболезненно.
Как мы создаём кастомный шаблон Joomla: разбор кейса
Недавно к нам обратился клиент из сферы услуг: нужен был сайт на Joomla 5 с уникальным дизайном и быстрой загрузкой. Дизайн включал нестандартную сетку с двумя боковыми панелями и анимацией при скролле. Мы спроектировали шаблон с нуля, использовали CSS Grid для позиционирования и Vite для сборки. В результате LCP снизился с 3.2 до 1.4 секунды, а сайт занял топ-3 в выдаче по целевым запросам.
Структура кастомного шаблона
Пример структуры директорий шаблона
templates/my-template/ ├── index.php # Главный файл шаблона ├── templateDetails.xml # Манифест (обязательно) ├── component.php # Шаблон для компонентов (print-версия) ├── error.php # Страница ошибок ├── offline.php # Страница обслуживания ├── css/ │ ├── template.css │ └── custom.css ├── js/ │ └── template.js ├── images/ │ └── logo.svg ├── html/ # Переопределения layout компонентов │ ├── com_content/ │ │ └── article/ │ │ └── default.php │ └── layouts/ │ └── joomla/ └── language/ └── ru-RU/ Манифест templateDetails.xml
<?xml version="1.0" encoding="utf-8"?> <extension version="3.1" type="template" client="site"> <name>my-template</name> <author>Your Company</author> <version>1.0.0</version> <description>Кастомный шаблон</description> <files> <filename>index.php</filename> <filename>templateDetails.xml</filename> <folder>css</folder> <folder>js</folder> <folder>images</folder> <folder>html</folder> </files> <positions> <position>header</position> <position>banner</position> <position>top-a</position> <position>top-b</position> <position>main-top</position> <position>sidebar-left</position> <position>sidebar-right</position> <position>main-bottom</position> <position>footer</position> </positions> <config> <fields name="params"> <fieldset name="basic"> <field name="logo" type="media" label="Логотип" /> <field name="accent_color" type="color" label="Цвет акцента" default="#0066cc" /> <field name="show_backtotop" type="radio" label="Кнопка вверх" default="1"> <option value="1">Да</option> <option value="0">Нет</option> </field> </fieldset> </fields> </config> </extension> Главный файл index.php
<?php defined('_JEXEC') or die; ?> <!DOCTYPE html> <html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <jdoc:include type="metas" /> <jdoc:include type="styles" /> <?php // Подключаем CSS шаблона $wa = $this->getWebAssetManager(); $wa->registerAndUseStyle('template.my-template', 'css/template.css'); $wa->registerAndUseScript('template.my-template', 'js/template.js', [], ['defer' => true]); ?> </head> <body class="site <?php echo $this->params->get('pageclass_sfx', ''); ?>"> <header class="site-header"> <?php if ($this->params->get('logo')) : ?> <a href="<?php echo $this->baseurl; ?>" class="site-logo"> <img src="<?php echo HTMLHelper::_('image', $this->params->get('logo'), '', [], true, 1); ?>" alt="<?php echo $sitename; ?>" loading="eager"> </a> <?php endif; ?> <nav class="site-nav"> <jdoc:include type="modules" name="header" style="none" /> </nav> </header> <div class="site-wrapper"> <?php if ($this->countModules('sidebar-left')) : ?> <aside class="sidebar sidebar--left"> <jdoc:include type="modules" name="sidebar-left" style="xhtml" /> </aside> <?php endif; ?> <main class="site-content" id="main-content"> <jdoc:include type="message" /> <jdoc:include type="component" /> </main> <?php if ($this->countModules('sidebar-right')) : ?> <aside class="sidebar sidebar--right"> <jdoc:include type="modules" name="sidebar-right" style="xhtml" /> </aside> <?php endif; ?> </div> <footer class="site-footer"> <jdoc:include type="modules" name="footer" style="none" /> <p>© <?php echo date('Y'); ?> <?php echo $sitename; ?></p> </footer> <jdoc:include type="scripts" /> </body> </html> Дочерний шаблон (Child Template)
Joomla 4+ поддерживает child templates. Согласно документации Joomla, достаточно создать минимальный манифест:
<!-- templateDetails.xml дочернего шаблона --> <inheritable>0</inheritable> <parent>cassiopeia</parent> Child template наследует все файлы родителя, переопределяет только то, что нужно. Обновления родителя применяются автоматически.
Почему кастомный шаблон лучше готового?
Кастомный шаблон загружается в 2–3 раза быстрее типовых решений, потому что мы включаем только нужные стили и скрипты. Вы получаете уникальный дизайн, полный контроль над HTML-структурой и возможность оптимизировать SEO-метрики.
Состав работ
- Манифест шаблона со всеми необходимыми файлами и позициями модулей.
- Адаптивная верстка под мобильные устройства, планшеты и десктоп.
- Переопределения layout компонентов (статьи, категории, контакты) по необходимости.
- Интеграция с вашим контентом — настройка модулей, главного меню, виджетов.
- Тестирование на разных браузерах и устройствах.
- Документация по структуре и настройке шаблона.
- Обучение администратора работе с шаблоном.
- Поддержка в течение 30 дней после сдачи проекта.
Сравнение кастомного и готового шаблона
| Характеристика | Кастомный шаблон | Готовый шаблон |
|---|---|---|
| Скорость загрузки (LCP) | < 1.5 с | > 2.5 с |
| Уникальность дизайна | 100% | Ограничен настройками |
| SEO-оптимизация | Полный контроль | Часто избыточный код |
| Адаптивность | Под любой макет | Фиксированные сетки |
| Обновления | Безопасные через child theme | Могут сломать кастомизацию |
Процесс работы
| Этап | Длительность |
|---|---|
| Аналитика | 1–2 дня |
| Проектирование | 2–3 дня |
| Верстка | 3–5 дней |
| Интеграция | 1–2 дня |
| Тестирование | 1–2 дня |
| Деплой | 0.5 дня |
- Аналитика — изучаем ваш дизайн-макет, требования к функционалу, целевые метрики.
- Проектирование — создаем прототип шаблона, определяем позиции модулей, разрабатываем структуру файлов.
- Верстка — пишем HTML/CSS/JS с использованием современного стека (Vite, SCSS, TypeScript).
- Интеграция — переносим верстку в Joomla, подключаем модули, настраиваем параметры.
- Тестирование — проверяем на соответствие дизайну, производительность (Core Web Vitals), кроссбраузерность.
- Деплой — размещаем на хостинге, передаем документацию, проводим обучение.
Ориентировочные сроки и стоимость
Разработка кастомного шаблона по готовому дизайну с 8–12 позициями модулей занимает от 5 до 15 дней. Стоимость рассчитывается индивидуально, но обычно проект обходится в разы дешевле, чем в крупных студиях — за счет прямого контакта с разработчиком и отсутствия наценок менеджеров.
Чек-лист типичных ошибок
- Не все позиции модулей указаны в
templateDetails.xml. - Отсутствует файл
error.php— при ошибке 500 пользователь видит пустую страницу. - Не добавлена поддержка атрибута
loading="lazy"для изображений в контенте. - JavaScript не отложен (
deferилиasync) — блокирует рендеринг. - Манифест не содержит параметров для настройки логотипа или цветовой схемы.
Оценка проекта
Свяжитесь с нами — мы проанализируем ваш макет, предложим оптимальную архитектуру шаблона и рассчитаем точную стоимость. Вы получите консультацию инженера с 8-летним опытом работы с Joomla и более 50 реализованными проектами. Включим настройку всех позиций модулей, переопределения layout и поддержку после запуска. Закажите разработку под ключ — гарантируем совместимость с Joomla 5.







