Jekyll: настройка и кастомизация темы под ключ
Jekyll — генератор статических сайтов, который часто выбирают для блогов, документации и лендингов. Когда стандартная тема (Minima, Minimal Mistakes) не вписывается в брендбук, начинается кастомизация. Мы настраиваем Jekyll-темы под ключ: от переопределения шаблонов до внедрения кастомных SCSS-стилей и плагинов. За 5 лет работы с Jekyll мы выполнили более 20 проектов — от простых блогов до многостраничников с 5000+ страницами. Кастомизация экономит до 40% времени на разработку по сравнению с созданием темы с нуля, а готовый сайт работает на 30% быстрее типовых решений на CMS.
Основные способы распространения тем
Существует два подхода: gem-based (тема как Ruby gem) и remote theme (из GitHub). Gem-based темы устанавливаются через Bundler, их файлы хранятся в директории Ruby gems. Remote theme копируется напрямую при сборке. Механизм кастомизации схож: файлы в корне проекта перекрывают файлы темы. Однако есть нюансы.
| Характеристика | Gem-based | Remote theme |
|---|---|---|
| Установка | gem "minima" в Gemfile |
remote_theme: "owner/repo" |
| Локация файлов | В gems директории | Копируются в _sass/, _layouts/ |
| Гибкость кастомизации | Полный override | Ограниченный override (сложнее переопределить партиалы) |
| Рекомендация | Для детальной настройки | Для быстрого старта |
Для gem-based используем команду bundle exec jekyll theme-files, чтобы увидеть все файлы темы, и копируем нужные в проект. Как описано в Jekyll documentation.
Как переопределить шаблоны в Jekyll?
Для override скопируем файл из gem в корень проекта, сохранив структуру папок. Например, скопировать лейаут поста:
cp $(bundle info --path minima)/_layouts/post.html _layouts/post.html После этого редактируем скопированный файл. Jekyll при сборке использует файл из корня проекта, а не из gem. Это стандартный механизм для всех путей: _layouts/, _includes/, _sass/.
Настройка через _config.yml и кастомизация стилей
Большинство тем читают параметры из _config.yml. Пример для Minimal Mistakes:
remote_theme: "mmistakes/[email protected]" minimal_mistakes_skin: "air" locale: "ru-RU" title: "Название сайта" name: "Команда" description: "Описание" url: "https://example.com" author: name: "Имя" avatar: "/assets/images/avatar.jpg" bio: "Краткое описание" links: - label: "Email" icon: "fas fa-fw fa-envelope-square" url: "mailto:[email protected]" navigation: - title: "Главная" url: / - title: "Блог" url: /blog/ Обратите внимание: параметры тем часто живут в документации. Мы всегда проверяем актуальную версию темы.
Gem-темы обычно позволяют добавить кастомные стили через assets/css/style.scss. Для Minima:
--- --- @import "minima"; :root { --base-font-size: 16px; --base-line-height: 1.7; --brand-color: #2563eb; } .site-header { border-top: 4px solid var(--brand-color); background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.08); } Для Minimal Mistakes — через _sass/minimal-mistakes/_variables.scss (скопированный из gem). Такой подход гарантирует, что изменения не потеряются при обновлении темы (если не перезаписывать при обновлении).
Переопределение шаблонов Liquid и управление навигацией
Пример: добавить таблицу содержания (TOC) в лейаут поста. Создаём _layouts/post.html с условием:
--- layout: default --- <article> <header>...</header> {% if page.toc %} <aside class="toc"> <h2>Содержание</h2> {% include toc.html html=content %} </aside> {% endif %} <div class="post-content">{{ content }}</div> </article> Для сложных меню используем _data/navigation.yml, где определяем иерархию пунктов. В _includes/header.html выводим их через цикл с проверкой на подпункты.
Кастомные компоненты и частые проблемы
Если тема не предусматривает нужный элемент (например, CTA-баннер), создаём кастомный партиал в _includes/. Партиалы принимают параметры и легко вставляются через {% include %}.
Типичные ошибки при кастомизации
- Конфликт имён файлов: если скопированный файл не соответствует структуре, Jekyll не подхватит его.
- Устаревшие переменные: при обновлении темы некоторые переменные могут быть удалены.
- Проблемы с зависимостями: плагины требуют указания в Gemfile.
Мы проверяем сборку после каждого изменения и используем bundle exec jekyll serve с флагом --verbose для диагностики.
| Цель кастомизации | Подход |
|---|---|
| Изменение цветовой схемы | CSS custom properties, SCSS variables |
| Добавление нового типа страниц | Создание нового layout и коллекции |
| Интеграция внешних сервисов | Партиалы, плагины |
Как проходит процесс кастомизации?
- Анализ — изучаем текущую тему и требования к кастомизации.
- Проектирование — выбираем стратегию: gem или remote theme.
- Настройка конфига — прописываем параметры темы.
- Override шаблонов — копируем и редактируем нужные файлы.
- Кастомизация стилей — подключаем кастомные SCSS/CSS.
- Добавление компонентов — создаём партиалы для недостающих элементов.
- Тестирование — проверяем локально и на CI.
- Деплой — публикуем на хостинге.
Что входит в кастомизацию Jekyll-темы?
При заказе кастомизации Jekyll-темы под ключ мы предоставляем:
- анализ текущей темы и список изменений;
- настройку
_config.ymlиGemfile; - переопределение шаблонов (layout, includes);
- кастомизацию стилей (SCSS, CSS custom properties);
- добавление кастомных компонентов;
- интеграцию аналитики и комментариев;
- тестирование на всех страницах;
- инструкцию по обновлению темы;
- доступ к репозиторию проекта.
Сроки и стоимость
Сроки настройки зависят от объёма: простая настройка через конфиг и CSS — от 1 до 2 дней. Override шаблонов и добавление кастомных компонентов — от 3 до 5 дней. Точную стоимость рассчитываем индивидуально, исходя из сложности темы и требований. Свяжитесь с нами — оценим проект бесплатно.
Мы работаем с Jekyll более 5 лет, выполнили более 20 проектов на статических сайтах. Гарантируем результат: сайт будет соответствовать вашим ожиданиям и Core Web Vitals. Закажите кастомизацию Jekyll-темы под ключ — получите современный статический сайт.
Для справки: Jekyll — популярный генератор статических сайтов, используемый для блогов и документации.







