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

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

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

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

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

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

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

Почему модульные сниппеты экономят время?

Каждый сниппет отвечает за одну зону — хедер, футер, карточку товара, блок контента. Это сокращает дублирование кода на 60% и упрощает поддержку. При изменении дизайна достаточно отредактировать один файл, а не 10 шаблонов. Мы используем модульные сниппеты как основу для всех проектов.

Какие проблемы решаем?

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

Когда стоит выносить логику в контроллер?

Если в шаблоне появляются сложные вычисления, фильтрация или подготовка данных — пора выносить их в контроллер. Контроллер 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 день.

Типичные ошибки при разработке шаблонов Kirby

  • Размещение логики в шаблоне вместо выноса в контроллер. Это усложняет тестирование и поддержку.
  • Отсутствие обработки пустых полей — приводит к ошибкам при выводе. Используйте ->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']).

Наш процесс работы

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

Что входит в работу?

  • Исходный код всех шаблонов и сниппетов.
  • Документация по структуре полей и настройке.
  • Доступы к репозиторию и системе управления.
  • Обучение редакторов работе с админкой.
  • Поддержка в течение 1 месяца после сдачи.

Сроки и стоимость

Типовой шаблон для одного типа страниц — от 2 до 3 дней. Полный набор для корпоративного сайта — от 1 до 2 недель. Стоимость одного шаблона — от 15 000 до 40 000 рублей в зависимости от сложности. Средняя экономия бюджета по сравнению с другими CMS — до 30%.

Свяжитесь с нами для обсуждения вашего проекта — мы подготовим коммерческое предложение с детальным описанием.