Розробка кастомних шаблонів та сніпетів Kirby на PHP

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомних шаблонів та сніпетів Kirby на PHP
Середній
~3-5 днів
Часті запитання

Стандартні шаблони Kirby часто призводять до дублювання коду та складнощів з підтримкою, коли проект виростає до сотень сторінок. Оптимізація через модульні сніпети та контролери — ключ до масштабування. Отримайте консультацію по вашому проекту — ми допоможемо спроектувати архітектуру шаблонів.

Ми розробляємо кастомні шаблони Kirby на PHP, використовуючи чистий код без шаблонізаторів. Кожен файл у папці templates відповідає за свій тип сторінки. Але як ефективно організувати код, перевикористовувати блоки та обробляти кастомні поля? Наші інженери показують на реальних прикладах: корпоративний сайт з каталогом на 2000 товарів та інтернет-магазин з блочним редактором. За багаторічний досвід ми накопичили практику, яка дозволяє прискорити розробку на 40% і скоротити бюджет на 30%.

Проблеми та рішення в розробці шаблонів Kirby

Чому модульні сніпети економлять час?

Кожен сніпет відповідає за одну зону — хедер, футер, картку товару, блок контенту. Це скорочує дублювання коду на 60% і спрощує підтримку. При зміні дизайну достатньо відредагувати один файл, а не 10 шаблонів. Модульні сніпети кращі за монолітні шаблони в 2 рази за швидкістю розробки. Вони також забезпечують кращу читаність завдяки чіткому розподілу відповідальності.

Які проблеми вирішуємо

  • Дублювання коду — без сніпетів один і той самий висновок копіюється в кожному шаблоні. Використання сніпетів зменшує дублювання на 60%.
  • Складна фільтрація — наприклад, висновок каталогу продуктів з пагінацією та фільтром за категоріями. Реалізуємо через контролери та URL-параметри.
  • Нестандартні поля — Kirby плоска, але ми вміємо працювати з structure, blocks, file-полями, щоб створювати гнучкі адмін-інтерфейси.
  • Продуктивність — неоптимізовані запити уповільнюють сайт. Використовуємо кешування опкодів та індексування, що знижує час завантаження сторінок на 30%.

Коли варто виносити логіку в контролер?

Якщо в шаблоні з'являються складні обчислення, фільтрація або підготовка даних — пора виносити їх у контролер. Контролер Kirby — це функція, яка повертає масив змінних для шаблону. Це покращує читаність і тестованість коду. Контролери кращі за монолітні шаблони в 3 рази за читаністю. Також це дозволяє перевикористовувати одну й ту саму логіку для різних шаблонів. Згідно з офіційною документацією Kirby, використання контролерів є рекомендованою практикою для складних сторінок.

Приклади реалізації

Шаблон статті з кастомними полями

Використовуємо підхід: blueprint → контролер → шаблон → сніпети. Приклад для сторінки article:

# site/blueprints/pages/article.yml title: Стаття fields: subtitle: type: text cover: type: files text: type: blocks 

Контролер передає оброблені дані в шаблон:

<?php // site/controllers/article.php
return function ($page) {
    $subtitle = $page->subtitle()->or('Без підзаголовка');
    $cover = $page->cover()->toFile();
    $blocks = $page->text()->toBlocks();
    return compact('subtitle', 'cover', 'blocks');
};

Шаблон збирає все через сніпети:

<?php snippet('header', ['title' => $page->title()]) ?>
<main>
  <article>
    <?php snippet('hero', ['cover' => $cover, 'subtitle' => $subtitle]) ?>
    <?php snippet('content-blocks', ['blocks' => $blocks]) ?>
  </article>
</main>
<?php snippet('footer') ?>

Кожен сніпет відповідає за свою зону. Це прискорює розробку в 2 рази порівняно з монолітним шаблоном.

Сніпет для фільтрації каталогу

У контролері сторінки products збираємо продукти з папки content/products. Використовуємо $kirby->collection() або $pages->find('products')->children().

<?php snippet('catalog-filter', ['categories' => $categories, 'active' => $active]) ?> 

Сніпет catalog-filter.php виводить список категорій з активним класом. Разом з пагінацією це дає готовий каталог за 1 день.

Типові помилки та найкращі практики

Які помилки найчастіші?

  • Розміщення логіки в шаблоні замість виносу в контролер. Це ускладнює тестування та підтримку.
  • Відсутність обробки порожніх полів — призводить до помилок при висновку. Використовуйте ->or() або ->isNotEmpty().
  • Ігнорування кешування — для сайтів з великою кількістю сторінок (1000+) без кешу TTFB зростає до 3 секунд.

Типи полів та варіанти шаблонів

Тип поля Методи виведення Приклад
text $page->field()->html(), ->kirbytext() $page->title()->html()
files ->toFile(), ->url(), ->crop() $page->cover()->toFile()->crop(800, 400)->url()
structure ->toStructure(), ->count() $page->gallery()->toStructure()
blocks ->toBlocks() $page->text()->toBlocks()
date ->toDate('d.m.Y'), ->isNotEmpty() $page->date()->toDate('Y-m-d')

Використання методів безпосередньо в шаблоні — часта помилка. Краще виносити логіку в контролер.

Суфікс шаблону Призначення Файл
(без) Основний article.php
.preview Попередній перегляд article.preview.php
.rss RSS-версія article.rss.php
.json JSON-вивід article.json.php

Kirby сам обирає відповідний шаблон за контекстом. Можна явно вказати: $page->render(['template' => 'article.rss']). Також використовуйте Kirby API для роботи з даними, наприклад kirby()->collection('products').

Наш процес та умови співпраці

Етапи роботи та що входить

  1. Аналіз blueprint та вимог до полів.
  2. Проектування системи сніпетів і контролерів.
  3. Реалізація шаблонів з урахуванням адаптивності.
  4. Інтеграція блочного редактора та кастомних блоків.
  5. Тестування на різних типах сторінок.
  6. Деплой та документація.

У вартість входить: вихідний код всіх шаблонів і сніпетів, документація по структурі полів, доступ до репозиторію, навчання редакторів, підтримка 1 місяць. Ми гарантуємо якість коду та використовуємо PSR-4 автозавантаження та об'єктно-орієнтований підхід.

Терміни та вартість

Типовий шаблон для одного типу сторінок — від 2 до 3 днів. Повний набір для корпоративного сайту — від 1 до 2 тижнів. Вартість одного шаблону — від 10 000 до 30 000 грн залежно від складності. Середня економія бюджету порівняно з іншими CMS — до 30%. Зв'яжіться з нами для обговорення вашого проекту — ми підготуємо комерційну пропозицію з детальним описом.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060