Grav CMS: Минималистичный движок на плоских файлах
Grav — это современная бесплатная CMS с открытым исходным кодом, написанная на чистом PHP и работающая без базы данных (Flat-File). Вся информация, настройки и контент хранятся в виде обычных текстовых файлов и Markdown-документов. Это обеспечивает максимальную скорость отдачи страниц, ничтожное потребление оперативной памяти и моментальное резервное копирование простым архивированием папки сайта.
Основная ценность Grav для гибридных проектов — встроенная в ядро мультиязычность и полная свобода в верстке: для главной страницы можно задать изолированный HTML5/CSS3 шаблон со своим Native JS, а остальные страницы использовать как структурированную Wiki.
Важный нюанс: по правилам лицензии Grav Premium, одна лицензия = один сайт. Но для локальной разработки и тестов ты можешь использовать одну лицензию, а вторую докупить только когда решишь выкатывать второй сайт в паблик, если тебе всё понравится
В чем разница между Grav Core и Grav + Admin
Grav Core: Только ядро системы, CLI-инструмент (утилита gpm), базовый шаблон. Для разработчиков, которые управляют контентом через IDE (например, Cursor), синхронизируют файлы по FTP/SSH или используют Git. Контент пишется в .md файлах на диске.
Grav + Admin Plugin для тех, кому нужен визуальный интерфейс для создания страниц, управления плагинами, обновлениями и настройками мультиязычности через браузер.
Версия Grav + Admin удобнее для быстрого старта, так как позволяет настраивать языковые пространства имен в кликабельном интерфейсе, но под капотом она создает точно такие же текстовые конфигурационные файлы, как и Core.
Короткая инструкция по установке в окружении Nginx + PHP-FPM
Установка Grav сводится к банальной распаковке архива. Ему не нужны компиляторы или сложные системные зависимости. Подключитесь к VPS по SSH, перейдите в корневую директорию веб-сервера и скачайте актуальную версию (в примере берем вариант с админ-панелью):
cd /var/www/ wget https://getgrav.org/download/core/grav-admin/latest unzip latest
Что нужно сделать прямо сейчас (Первый запуск):
- Создайте аккаунт по ссылке тимя_вашего_домена/admin: Заполните форму (Имя пользователя, Email, Пароль). Панель создается локально на вашем сервере, никаких внешних регистраций.
- Войдите в панель: После создания аккаунта вы сразу попадете в Dashboard (главный экран админки).
Настройка чистой мультиязычности
Баг Grav CMS v1.7.x (Admin Panel v1.10.52): Затирание мастер-локализации при создании перевода
Суть бага: В мультиязычном режиме на стеке PHP 8.3 + Nginx/PHP-FPM встроенный веб-редактор (Admin Panel) критически сбоит при попытке перевести страницу на новый язык, файла которого еще физически нет на диске. Вместо генерации нового языкового файла (например, default.pt-br.md), админка паникует, выдает ворнинг Falling back to English language и перезаписывает содержимое мастер-файла (default.md) новым переводом.
Решение: Полный отказ от забагованной панели Admin Panel для мультиязычных pSEO-проектов. Управление контентом напрямую через текстовые файлы Markdown (default.md, default.ru.md, default.pt-br.md) силами ядра Grav Core работает как швейцарские часы и полностью исключает риск перезаписи данных.
Безопасный алгоритм работы:
- В админке: Нажимаете Add Page, вводите название на английском, нажимаете Continue. Вставляете английский текст. Нажимаете Save. (Создался default.md).
- В консоли / Cursor (занимает 5 секунд): Заходите в созданную папку и одной командой создаете «заглушки» для остальных ваших языков:
cd user/pages/имя-папки touch default.ru.md default.uk.md default.pt-br.md
Всё делается в пару кликов:
- В левом меню админки перейдите в раздел Configuration (Настройки).
- Перейдите на вкладку System (Система).
- Найдите блок Languages (обычно он идет одним из первых). В поле Supported (Поддерживаемые языки) введите ваши коды через запятую в порядке приоритета. Например, если главный язык английский: en, ru, pt-br, uk. Чуть ниже найдите опцию Include default language code (Включать код дефолтного языка в URL). Если выключить: Главная страница на русском будет доступна просто по адресу site.com/, а английская — site.com/en/. Если включить: Русский будет site.com/ru/, английский — site.com/en/. Для SEO чище выключить (чтобы корень был главным языком без лишних редиректов).
- Нажмите кнопку Save в верхнем правом углу.
Перелинковка (Внутренние ссылки)
В DokuWiki это работает через синтаксис
[[Название страницы]]
. В голом Markdown (и в Hugo) тебе нужно вручную прописывать относительные пути:
[Текст](../folder/page.md)
, что ужасно неудобно.
Как это работает в Grav + Editor Pro? Здесь перелинковка решена на уровне современного визуального редактора (TipTap):
Ты выделяешь слово в визуальном редакторе.
- Нажимаешь Ctrl+K (или иконку ссылки).
- Начинаешь вводить название существующей статьи (например, "proxi").
- Editor Pro автоматически ищет по всей базе твоих статей и выдает выпадающий список. Кликаешь — и он сам формирует правильный внутренний роут (вида [Текст](route:/ai-stack/proxy-for-claude)).
Если URL страницы позже изменится, Grav умеет обрабатывать редиректы, либо внутренние роуты сами подстроятся. Это гораздо удобнее, чем в DokuWiki, потому что тебе не нужно помнить точный URL, редактор ищет по заголовкам.
Какие темы Grav выбирать
Тема для Grav достаточно много, их можно посмотреть по этой ссылке https://getgrav.org/downloads/themes. Достойны внимания такие темы:
- Bootstrap4 Open Matter. Можно посмотреть демо. Тема изначально заточена под легкое добавление сторонних скриптов. В ней есть заготовленные Twig-файлы (partials) для хедера и футера, куда можно жестко вшить рекламные сети.
Quark 2 тема по умолчанию
https://github.com/getgrav/grav-theme-quark2 Максимально стабильная, обновляется вместе с ядром Grav. Quark 2 в качестве темы по умолчанию: Blades CSS, Font Awesome 7, автоматический/светлый/темный режимы с сохранением выбора в localStorage, локальное размещение шрифтов Cal Sans и Inter, а также доработанная дизайн-система.
Встроенная поддержка мультиязычности (языковой переключатель готов из коробки).
Чтобы сделать её строго одноколоночной, достаточно убрать вызовы сайдбара в шаблоне base.html.twig и использовать шаблон default без боковых панелей.
Возможности и преимущества Helios Theme
Helios изначально спроектирована как Technical Documentation Theme (Документация и Базы знаний).
- Трехколоночный макет (Three-Column Layout): Это золотой стандарт для сложных каталогов и справочников (как у OpenAI, Stripe или Tailwind). Слева — глобальная навигация по категориям (например, "ИИ Модели", "MCP Серверы"). По центру — сам контент. Справа — автоматический скролл-спай (Scroll-spy) по заголовкам текущей страницы (оглавление).
- Шикарная работа с таблицами и кодом. В Helios встроена подсветка синтаксиса на 200+ языков (плагин Codesh) с визуальными вкладками (Tabs), нумерацией строк и горизонтальным скроллом для широких таблиц.
- Каталогизация и версия: В ней есть нативная поддержка фолдерного версионирования (v1, v2). Для мануалов по API и ИИ это огромный плюс.
- Callouts (Врезки-алерты): Нативная поддержка блоков типа [!NOTE], [!WARNING].
Как обновлять Grav, плагины и темы без плагина Admin
Обновление без админки: вручную не придётся. В проекте есть менеджер пакетов Grav (GPM, bin/gpm), он работает из командной строки в корне проекта:
- php bin/gpm version Показывает установленные версии и доступные обновления
- php bin/gpm update Обновляет плагины и темы (-p только плагины, -t только темы, можно указать один пакет)
- php bin/gpm self-upgrade Обновляет само ядро Grav (перед этим можно php bin/gpm preflight)
Обновлять часто не нужно: достаточно при исправлениях безопасности или когда нужна новая функция. Перед обновлением сделайте коммит, потому что команды меняют много файлов.
Рекомендуемые обзоры инструментов
Инновационный браузер с поддержкой ИИ
Бесконечные профили для арбитража
Надежное решение для мультиаккаунтинга
Лидер рынка для арбитражников