Розробка кастомного шаблону Joomla

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка кастомного шаблону Joomla
Середня
~5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка користувацького шаблону Joomla

Шаблон Joomla визначає зовнішній вигляд сайту: HTML-розмітка, CSS, включення JavaScript. Joomla 5 використовує шаблон Cassiopeia як базовий — можна створити дочірній шаблон (child template) або розробити з нуля.

Структура шаблону

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/
    └── uk-UA/

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>

Переопределення layout компонента

Скопіювати оригінальний layout у папку html/ шаблону:

components/com_content/tmpl/article/default.php
→
templates/my-template/html/com_content/article/default.php

Joomla автоматично використовує версію з шаблону. Змінити розмітку статті, не торкаючись файлів ядра.

Дочірній шаблон (Child Template)

Joomla 4+ підтримує child templates:

<!-- templateDetails.xml дочернього шаблону -->
<inheritable>0</inheritable>
<parent>cassiopeia</parent>

Дочірній шаблон наслідує всі файли батька, переопределяє лише те, що потрібно. Оновлення батька застосовуються автоматично.

Сборка з Vite

// vite.config.js
export default {
    build: {
        outDir: 'templates/my-template',
        rollupOptions: {
            input: { main: 'src/js/main.js' },
            output: { assetFileNames: 'css/[name].[ext]', entryFileNames: 'js/[name].js' }
        }
    }
};

Терміни

Розробка користувацького шаблону за готовим дизайном з 8–12 позиціями модулів — 5–10 днів.