Розробка кастомної теми Concrete CMS під ключ

Ви витратили тижні на налаштування готової теми Concrete CMS, а вона все ще завантажується 8 секунд і не відповідає макету. Рішення — кастомна тема, написана під ваш дизайн. Ми створюємо теми, які дають 90+ балів Lighthouse, легко підтримуються і масштабуються. Наші спеціалісти мають понад 10 років

Розробка та обслуговування будь-яких видів сайтів:

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомної теми Concrete CMS під ключ
Середній
~5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Ви витратили тижні на налаштування готової теми Concrete CMS, а вона все ще завантажується 8 секунд і не відповідає макету. Рішення — кастомна тема, написана під ваш дизайн. Ми створюємо теми, які дають 90+ балів Lighthouse, легко підтримуються і масштабуються. Наші спеціалісти мають понад 10 років досвіду у веб-розробці, і більше 50 успішних проєктів підтверджують: індивідуальна розробка окупається швидкістю та гнучкістю. Типові проблеми готових тем — перевантажений CSS (до 70% невикористовуваних стилів), зайві JavaScript-бібліотеки, відсутність адаптивності під складні макети. Все це напряму б'є по Core Web Vitals і конверсії.

Чому кастомна тема вигідніша за готову?

Готові теми часто містять багато мертвого коду. Наприклад, у популярному шаблоні може бути 5 різних стилів для галерей, з яких використовується лише один. Це збільшує LCP до 4+ секунд, а CLS — до 0,15. Кастомна тема, написана під конкретний дизайн, позбавлена цих проблем. Ми застосовуємо tree-shake CSS, мініфікуємо JS, впроваджуємо критичний CSS. Після впровадження кастомної теми ми фіксуємо покращення LCP в середньому на 40%, CLS знижується до 0.05, INP — до 150 мс. Для порівняння: у готової теми LCP часто перевищує 4 секунди.

За даними офіційної документації Concrete CMS, кастомна тема дозволяє скоротити об'єм переданого CSS на 60-80% за рахунок видалення невикористовуваних стилів.

Технічна реалізація кастомної теми

Структура пакетної теми

Пакет містить все необхідне: свою файлову структуру, контролер, ассети. При оновленні Concrete CMS тема залишається сумісною — достатньо перевстановити пакет. Упаковка дозволяє легко додавати кастомні блоки та атрибути, не зачіпаючи ядро.

Приклад структури пакетної теми
packages/my-theme/ controller.php # контролер пакета themes/ my-theme/ page_types/ # шаблони типів сторінок home.php default.php service-detail.php elements/ # частини шаблону (header, footer, nav) header.php footer.php navigation.php blocks/ # перевизначення шаблонів блоків content/ templates/ two-column.php css/ main.css js/ app.js thumbnail.png # прев'ю теми (360×270) description.txt page.php # базовий шаблон (fallback) view.php # головний layout (deprecated, але підтримується) 

Базовий шаблон page.php

page.php — головний layout, в який вставляється вміст типу сторінки. Він підключає CSS/JS та загальні елементи.

<?php // packages/my-theme/themes/my-theme/page.php defined('C5_EXECUTE') or die('Access Denied.'); ?> <!DOCTYPE html> <html lang="<?= Localization::activeLocale() ?>"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title><?= $c->getCollectionName() ?> | <?= $site->getName() ?></title> <?php $html = Loader::helper('html'); echo $html->css('main.css', 'my-theme'); ?> <?php View::element('header_required', ['disableTrackingCode' => false]) ?> </head> <body class="<?= $c->getPageWrapperClass() ?>"> <?php View::element('header', [], 'my-theme') ?> <main id="main-content"> <?php echo $innerContent ?> </main> <?php View::element('footer', [], 'my-theme') ?> <?php echo $html->javascript('app.js', 'my-theme') ?> <?php View::element('footer_required') ?> </body> </html> 

Змінна $innerContent вставляє вміст шаблону типу сторінки. Це дозволяє розділити структуру та контент.

Шаблон типу сторінки

Для кожного типу сторінки (наприклад, «Послуга», «Головна») створюється окремий файл. У ньому можна оголосити власні області (Area) та виводити атрибути сторінки.

<?php // page_types/service-detail.php defined('C5_EXECUTE') or die('Access Denied.'); $a_hero = new Area('Hero'); $a_content = new Area('Main Content'); $a_related = new Area('Related Services'); $heroImage = $c->getAttribute('hero_image'); $intro = $c->getAttribute('intro_text'); ?> <section class="hero <?= $heroImage ? 'hero--has-image' : '' ?>"> <?php if ($heroImage): ?> <img src="<?= $heroImage->getURL() ?>" alt="<?= h($c->getCollectionName()) ?>"> <?php endif; ?> <div class="hero__content"> <h1><?= h($c->getCollectionName()) ?></h1> <?php if ($intro): ?><p><?= h($intro) ?></p><?php endif; ?> </div> </section> <div class="container layout-sidebar"> <article class="content"> <?php $a_content->display($c) ?> </article> <aside class="sidebar"> <?php $a_related->display($c) ?> </aside> </div> 

Елемент навігації з активним станом

Навігація — один з найважливіших елементів. Ми реалізуємо визначення активного пункту на основі ID поточної сторінки та її батьківських сторінок.

<?php // elements/navigation.php defined('C5_EXECUTE') or die('Access Denied.'); $navHelper = Loader::helper('navigation'); $pages = Page::getByPath('/')->getCollectionChildren(); ?> <nav class="main-nav"> <ul> <?php foreach ($pages as $navPage): ?> <?php $isActive = ($c->getCollectionID() == $navPage->getCollectionID() || $navHelper->isParentPage($c, $navPage)); ?> <li class="<?= $isActive ? 'active' : '' ?>"> <a href="<?= $navPage->getCollectionLink() ?>"> <?= h($navPage->getCollectionName()) ?> </a> </li> <?php endforeach; ?> </ul> </nav> 

Перевизначення шаблону блоку

Concrete CMS дозволяє створити альтернативний шаблон для будь-якого вбудованого блоку. Редактор побачить його у випадному списку при виборі блоку.

<?php // packages/my-theme/themes/my-theme/blocks/content/templates/two-column.php defined('C5_EXECUTE') or die('Access Denied.'); ?> <div class="content-block two-col"> <div class="col"><?= $content ?></div> </div> 

Порівняння кастомної та готової теми

Параметр Кастомна тема Готова тема
Продуктивність 90+ балів Lighthouse Часто <70 балів через зайвий код
Гнучкість Будь-які типи сторінок і блоки Обмежена шаблоном
Підтримка Повний контроль, легко оновлювати Залежність від розробника теми
Вартість у довгостроковій перспективі Окупається за рахунок швидкості та низьких витрат на підтримку Може вимагати заміни при зростанні проєкту

Що входить у розробку

  • Аналіз макету та прототипів
  • Розробка структури теми (пакетна або звичайна)
  • Створення типів сторінок та областей
  • Написання кастомних шаблонів блоків (якщо потрібно)
  • Адаптивна верстка (Mobile First)
  • Налаштування Asset Pipeline (Vite/Webpack)
  • Інтеграція з атрибутами сторінки
  • Документація та навчання редакторів
  • Технічна підтримка протягом 2 тижнів після здачі

Як оптимізувати Core Web Vitals у темі?

Для збірки CSS/JS ми використовуємо Vite або Webpack. Зібрані файли кладуться в themes/my-theme/css/ та js/. У page.php підключаємо через $html->css() та $html->javascript() — Concrete CMS автоматично додає версійний хеш. Це гарантує, що зміни асетів одразу застосовуються без кешування старої версії. Додатково впроваджуємо критичний CSS для швидкого першого рендерингу. Результат — LCP < 2 секунд, CLS < 0.05, INP < 150 мс.

Кастомна тема забезпечує LCP у 2 рази швидше, ніж готова тема. Кроки:

  1. Аналіз макету: виявляємо критичний шлях рендерингу, визначаємо блокуючі ресурси.
  2. Збірка через Vite: tree-shake CSS, мініфікація JS, автооновлення при розробці.
  3. Впровадження критичного CSS: вбудовуємо стилі для першого екрану в <head>.
  4. Оптимізація зображень: WEBP, lazy loading, адаптивні srcset.
  5. Тестування: Lighthouse, WebPageTest, реальні пристрої.

Терміни та гарантії

Робота Термін
Базова тема з макету (5–7 типів сторінок) 2–4 тижні
Адаптивна тема з кастомними елементами 3–6 тижнів
Повна тема з пакетом, блоками, атрибутами 5–10 тижнів

Ми гарантуємо повну відповідність макету (Pixel Perfect), коректну адаптивність та відсутність помилок. Після здачі надаємо 2 тижні безкоштовної підтримки. Зв'яжіться з нами для оцінки вашого проєкту — ми проаналізуємо макет і запропонуємо оптимальне рішення. Замовте розробку кастомної теми Concrete CMS та отримайте консультацію з архітектури.

Більше інформації про можливості CMS — в офіційній документації Concrete CMS.