Разработка кастомной темы Grav (Twig) под ключ

Типовая тема Grav быстро упирается в потолок: правки копятся, скорость падает, а каждая новая страница требует ручной работы. Мы разрабатываем кастомную тему Grav под ключ — от структуры шаблонов до передачи проекта. В результате редакторы собирают страницы сами, а сайт выдерживает рост каталога без переделок.

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомной темы Grav (Twig) под ключ
Средний
~3-5 дней
Часто задаваемые вопросы

Почему типовая тема тормозит проект на Grav

Типовая тема Grav почти всегда собирается «на всё сразу»: десятки шаблонов Twig, наследование через несколько уровней, плагины, которые тянут свои таблицы стилей и скрипты на каждой странице. Пока контента мало, это незаметно. Как только каталог растёт до сотен страниц, а на страницу добавляются десятки блоков, начинают проявляться узкие места CMS: цепочка наследования шаблонов удлиняется, и каждый рендер проходит через все промежуточные слои, даже если итоговый блок не выводится.

Отдельная проблема — неконтролируемые обращения к файловой системе. Готовая тема читает конфигурацию, метаданные страниц и медиа через несколько слоёв абстракции, и на каждом запросе это повторяется заново. При кешировании «из коробки» такие вызовы частично гасятся, но стоит включить динамические блоки или персонализацию — и производительность Grav проседает именно на повторяющихся операциях, а не на самом рендере.

Третье — зависимости. Тема тянет библиотеку ради одной функции, плагин подключает свою версию той же библиотеки, и в итоговой сборке оказываются дубли. Это не только лишний вес страницы, но и конфликты при обновлении: непонятно, что можно трогать, а что сломает вёрстку. Заказчик в итоге платит за каждую правку дольше, потому что разработчик сначала распутывает чужую структуру.

Кастомная тема Grav снимает это на уровне архитектуры: шаблоны Twig проектируются под конкретные типы страниц без лишних уровней наследования, обращения к файлам кешируются осознанно, а зависимости фиксируются и минимизируются. Разбираем, как это закрывается в разработке темы Grav под ключ — от структуры шаблонов до политики обновлений.

Что даёт кастомная тема: измеримый эффект

Кастомная тема на Twig собирается под конкретную структуру контента, а не подгоняется под неё. Это даёт четыре измеримых направления выигрыша: скорость отдачи страниц, предсказуемость обновлений, снижение нагрузки на поддержку и управляемость контента для редактора. Ниже — как каждое устроено и почему так.

Скорость отдачи и время сборки страницы

Тема компилируется в шаблоны Twig, которые Grav кэширует: повторный рендер страницы идёт без повторного разбора разметки. Тяжёлые блоки — каталог, фильтры, формы — выносятся в отдельные шаблоны и подгружаются по требованию, а не собираются целиком на каждый запрос. На практике время сборки страницы падает с секунд до десятых долей, а стабильное время отклика напрямую влияет на поведение посетителей и позиции в поиске.

Предсказуемость обновлений и класс отказов

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

Снижение обращений в поддержку и управление контентом

Редактор работает с понятными полями и блоками вместо правки разметки: типовые страницы собираются из готовых секций, а неверный ввод отсекается на уровне шаблона. Число обращений «поправьте текст и картинку» падает в разы, а стоимость поддержки становится предсказуемой — правки контента не требуют разработчика. Мы работаем на Grav и актуальной ветке Twig, поэтому тема остаётся совместимой с обновлениями ядра.

Подходы к разработке темы: сравнение вариантов

Выбор между готовой темой, доработкой существующей и разработкой с нуля — это не вопрос вкуса, а вопрос того, какие ограничения вы готовы принять. Ниже — честное сравнение по трём сценариям, с которыми чаще всего приходят заказчики.

Вариант Когда подходит Ограничения
Готовая тема из каталога Нужен быстрый старт: лендинг, блог, типовой корпоративный сайт с предсказуемой структурой Дизайн и разметка заданы автором темы; нестандартные блоки и логика выводов требуют обходных решений, часть из них упирается в архитектуру шаблонов
Доработка существующей темы Сайт уже работает, структура контента устоялась, нужны точечные изменения: новые типы страниц, блоки, интеграции Наследуются чужие соглашения по шаблонам и стилям; чем глубже правки, тем выше риск конфликтов при обновлении темы
Кастомная тема с нуля Уникальная структура контента, свои типы страниц и коллекции, требования к скорости и разметке Дольше по срокам внедрения: сначала проектирование шаблонов и типов, потом вёрстка и наполнение

Готовая тема выигрывает по срокам внедрения, но проигрывает там, где структура контента не совпадает с замыслом автора. Доработка — разумный компромисс, пока правки локальны: как только меняется логика вывода на большинстве страниц, поддержка становится дороже, чем чистая разработка.

Тема с нуля окупается, когда контент-модель нестандартна: свои типы страниц, коллекции, переиспользуемые блоки. Здесь разметка и шаблоны проектируются под задачу, а не подгоняются под чужую сетку — это и даёт предсказуемую поддержку в дальнейшем.

Мы разбираем структуру контента и требования к страницам, после чего говорим прямо: где достаточно готового решения, где нужна доработка, а где честнее собрать тему с нуля.

Как мы ведём разработку темы Grav: этапы

Разработку темы Grav ведём как инженерный проект с фиксированными этапами: каждый шаг заканчивается артефактом, который можно проверить до перехода к следующему. Так требования не «расплываются» по ходу, а наследование шаблонов и структура контента проектируются до первой строки разметки — переделки на середине стоят дороже, чем аудит в начале.

Семь этапов работы

  1. Аудит требований. Разбираем типы страниц, блоки, модули и сценарии редактора: что наполняется вручную, что собирается из коллекций, где нужны переиспользуемые фрагменты. На выходе — карта контента и список шаблонов с приоритетами.
  2. Схема шаблонов и наследования. Проектируем дерево Twig-шаблонов: базовый каркас, партиалы, переопределения по типам страниц. Фиксируем, какой блок наследуется, а какой переопределяется — это убирает дублирование разметки.
  3. Настройка окружения. Поднимаем локальный стенд, репозиторий и сборку стилей и скриптов, настраиваем черновой и рабочий контуры. Правки идут через ветки, а не напрямую на живом сайте.
  4. Сборка компонентов. Собираем секции, формы, навигацию и медиа-блоки на реальной структуре контента, а не на заглушках. Каждый компонент проверяем на адаптивность и на поведение при пустых данных.
  5. Проверка вёрстки. Прогоняем страницы на разных разрешениях и браузерах, сверяем с макетом, проверяем доступность и скорость загрузки. Ошибки закрываем до передачи, а не после запуска.
  6. Обучение редакторов. Показываем, как добавлять страницы, собирать блоки и менять контент без разработчика. Отдаём короткую инструкцию по типовым действиям.
  7. Передача проекта. Передаём репозиторий, конфигурацию, документацию по шаблонам и доступы, разворачиваем на рабочем контуре и фиксируем регламент обновлений.

После передачи тема остаётся поддерживаемой: структура шаблонов и правила наследования описаны, поэтому новые блоки добавляются предсказуемо. Опишите задачу — вернёмся с оценкой и планом по этапам.

Структура темы, шаблоны Twig и наследование

Тема в Grav — это не набор отдельных страниц, а иерархия шаблонов Twig с чётким порядком наследования. Базовый base.html.twig описывает каркас: подключение стилей, мета-теги, общие блоки. Дочерние шаблоны наследуют его через {% extends %} и переопределяют только нужные блоки — {% block content %}, {% block header %}. Так правка в одном месте расходится по всем страницам, а не требует ручного обхода десятков файлов.

Повторяющиеся элементы — меню, футер, карточка товара, форма подписки — выносятся в партиалы и подключаются через {% include %} с передачей параметров. Один и тот же блок используется на главной, в каталоге и в статье, поэтому расхождение в вёрстке между разделами исключено технически, а не на дисциплине разработчика.

Отдельный слой — blueprint-конфигурация. Для каждого типа страницы описывается набор полей: заголовок, изображение, текстовые блоки, галерея, повторяющиеся секции. Редактор заполняет их через админку, и шаблон собирает страницу из этих данных. Добавить новый блок или поменять порядок секций можно без правки кода — разработчик подключается только когда меняется сама логика вывода.

Такая структура темы даёт предсказуемую поддержку: новый раздел собирается из готовых партиалов за часы, а не переписывается с нуля. Шаблоны остаются читаемыми, потому что каждый отвечает за свою зону ответственности, а не смешивает разметку, данные и логику в одном файле.

Что заказчик получает на руки после сдачи

Сдача — это не архив с файлами, а комплект, по которому ваша команда сможет работать без нас. Тема Grav живёт в виде исходников и конфигурации, поэтому передаём и то, и другое: без понимания, какой шаблон за что отвечает, любая правка превращается в археологию по коду.

  • Исходники темы — полный репозиторий с историей изменений: шаблоны на Twig, стили, скрипты, схема наследования. Разворачивается одной командой на чистом окружении.
  • Схема шаблонов — карта соответствия: какой Twig-файл рендерит какую страницу, от какого родителя наследуется, где подключаются блоки и партиалы. По ней новый разработчик ориентируется за час, а не за неделю.
  • Конфигурационные файлы — blueprints и настройки темы: какие поля доступны редактору, какие значения по умолчанию, где хранятся тексты и медиа. Правки контента не требуют правок кода.
  • Инструкция для редактора — как добавить страницу, поменять блок, загрузить изображение, что делать при ошибке. Написана под человека без технического бэкграунда, со скриншотами реальных экранов.
  • Регламент обновлений — порядок обновления ядра Grav, плагинов и зависимостей: что проверяется до, как делается откат, какие ветки считаются стабильными. Обновление перестаёт быть риском.
  • Журнал проверок — протокол приёмки: какие сценарии протестированы, на каких браузерах и разрешениях, какие замечания закрыты. Видно, что именно проверялось, а не «вроде работает».

Плюс доступы к репозиторию и окружению, зафиксированные версии зависимостей и контакты для вопросов на период сопровождения. Всё это описано в одном месте — не нужно собирать знания по переписке. Опишите задачу — вернёмся с оценкой и планом передачи.

Кейс: перенос каталога на кастомную тему Grav

Каталог на Grav у заказчика — производителя оборудования — жил на теме, собранной из готового шаблона с десятком расширений. Каждая правка вёрстки тянула за собой цепочку зависимостей, а редактор не мог опубликовать новый раздел без разработчика. Мы перенесли каталог на кастомную тему под ключ: собственные шаблоны Twig, единый набор блоков и вынесенные в конфигурацию поля карточек товаров.

Что изменили

Собрали тему с нуля под структуру каталога: раздельные шаблоны для категорий, карточек и лендингов, общий слой компонентов вместо копий разметки. Редактор получил готовые блоки — галерею, таблицу характеристик, блок документов — и собирает страницу из них через панель управления, без правки кода. Тяжёлые изображения перевели на отложенную загрузку, статику отдаём через кэш, а не через обработчик.

Метрики до и после

Показатель До После
Отдача страницы каталога 1,8–2,4 с 0,4–0,6 с
Обращения в поддержку по вёрстке 12–15 в месяц 2–3 в месяц
Публикация нового раздела редактором 2–3 дня через разработчика 30–40 минут самостоятельно
Правка карточки товара через код через панель управления

Отдельно сняли нагрузку с команды: типовые задачи — новый раздел, баннер, изменение структуры каталога — редактор закрывает сам. Разработчики возвращаются к продуктовым задачам, а не к правкам разметки. Если у вас каталог упирается в скорость отдачи или редактор зависит от разработчика — опишите задачу, вернёмся с оценкой и планом переноса.

Чем отличается кастомная тема от доработки готовой?

Разница не в объёме работ, а в том, где проходит граница применимости. Готовая тема — это уже принятая кем-то архитектура: своя иерархия шаблонов Twig, свои partial-блоки, свои соглашения по наследованию. Доработка дешевле и быстрее, пока задача укладывается в эту архитектуру: поменять разметку блока, добавить секцию на главную, переопределить один шаблон через механизм наследования. Пока правки локальны, вы платите за часы и получаете результат за дни.

Доработка превращается в постоянные заплатки, когда требования начинают спорить с заложенной структурой. Типичный признак: чтобы добавить одну страницу, приходится трогать пять шаблонов, а каждое обновление темы затирает ваши правки и их нужно переносить заново. Второй признак — контент-модель. Если типы страниц, таксономии и поля описываются в теме, а не конфигурацией, редактор не может собрать новую страницу без разработчика.

Кастомная тема — это когда структуру шаблонов проектируем под вашу контент-модель, а не подстраиваем контент под чужую. Наследование выстраивается так, чтобы новый тип страницы добавлялся одним шаблоном и набором partial-блоков, а логика выборки жила в конфигурации, а не в разметке. Тогда правка контента не требует релиза, а обновление ядра не ломает вёрстку.

Граница применимости считается по стоимости владения, а не по цене первой версии. Доработка выигрывает на коротком горизонте и узком наборе правок. Как только правки становятся регулярными, а обновления темы — риском, суммарные затраты на поддержку обгоняют разработку с нуля, и наступает момент переписывания. Переписывание — это не переделка вёрстки, а перенос контент-модели и маршрутов на новую структуру шаблонов; чем раньше оно сделано, тем дешевле обходится.

Частые технические сомнения заказчиков

Перед стартом почти каждая команда задаёт один и тот же набор вопросов — и это правильные вопросы, потому что ответы на них определяют, во что превратится сайт через год эксплуатации. Ниже — то, как мы закрываем каждый из них на уровне архитектуры, а не обещаний.

Что будет с обновлениями ядра и не сломают ли они тему?

Тема ставится как отдельный пакет и не патчит ядро — обновление системы не затрагивает ни шаблоны, ни стили. Кастомная логика выносится в собственные расширения и переопределения Twig-шаблонов через наследование, поэтому штатное обновление проходит без правок в коде темы. Мы фиксируем совместимую ветку ядра и проверяем обновление на стенде до переноса на рабочий контур.

Как быть с совместимостью плагинов?

Мы не тащим десяток сторонних расширений: типовые задачи — формы, меню, поиск, вывод медиа — закрываем своим кодом в теме. Если плагин всё же нужен, проверяем его на конфликты с шаблонами и правами доступа, а его настройки выносим в конфигурацию проекта. Так обновление одного расширения не роняет остальной сайт.

Как переносится контент со старого сайта?

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

Что входит в поддержку после сдачи?

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

Сможет ли редактор работать с сайтом без разработчика?

Да, и это закладывается в структуру заранее: контент редактируется через понятные поля и модульные блоки, которые собираются в страницу без вёрстки. Проводим обучение редакторов на их же контенте и оставляем краткую инструкцию по типовым сценариям. Разработчик подключается только к новым типам блоков.

Опишите вашу задачу — вернёмся с оценкой и планом работ по теме.

Обсудим вашу задачу по разработке темы

Чтобы вернуться с оценкой и планом, а не с общими словами, нам нужен минимум вводных. Первый разговор занимает 20-30 минут и идёт по делу: что за проект, какие страницы и типы контента, кто будет вести наполнение после запуска. По итогам мы говорим, укладывается ли задача в кастомную тему на Twig или часть закрывается штатными средствами — это честнее, чем тянуть всё в разработку.

Что прислать для оценки

  • Ссылку на текущий сайт или прототип — даже черновой, если он есть.
  • Перечень шаблонов страниц: главная, каталог, карточка, блог, формы, личный кабинет.
  • Схему контента: какие типы записей и поля нужны редактору, что он должен менять сам.
  • Референсы: 2-3 сайта, где нравится структура или поведение блоков, с пометкой что именно.
  • Требования к интеграциям: CRM, оплата, рассылки, внешние сервисы — списком, без деталей реализации.
  • Ограничения: сроки, привязка к существующему хостингу, требования безопасности или доступности.

Как проходит первый разговор

Мы разбираем задачу по шаблонам и типам контента, а не по «сделайте красиво». На этом этапе всплывают узкие места: нестандартные поля, сложная логика вывода, миграция существующего контента. Если часть требований конфликтует между собой, скажем прямо и предложим вариант, который решает исходную задачу проще.

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

Опишите задачу в удобной форме — вернёмся с оценкой и планом работ.

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060