Содержание

Grav CMS: Минималистичный движок на плоских файлах

Grav — это современная CMS с открытым исходным кодом, написанная на чистом PHP и работающая без базы данных (Flat-File). Вся информация, настройки и контент хранятся в виде обычных текстовых файлов и Markdown-документов. Это обеспечивает максимальную скорость отдачи страниц, ничтожное потребление оперативной памяти и моментальное резервное копирование простым архивированием папки сайта.

Основная ценность Grav для гибридных проектов — встроенная в ядро мультиязычность и полная свобода в верстке: для главной страницы можно задать изолированный HTML5/CSS3 шаблон со своим Native JS, а остальные страницы использовать как структурированную Wiki.

В чем разница между 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

Что нужно сделать прямо сейчас (Первый запуск):

  1. Создайте аккаунт по ссылке тимя_вашего_домена/admin: Заполните форму (Имя пользователя, Email, Пароль). Панель создается локально на вашем сервере, никаких внешних регистраций.
  2. Войдите в панель: После создания аккаунта вы сразу попадете в 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 работает как швейцарские часы и полностью исключает риск перезаписи данных.

Безопасный алгоритм работы:

  1. В админке: Нажимаете Add Page, вводите название на английском, нажимаете Continue. Вставляете английский текст. Нажимаете Save. (Создался default.md).
  2. В консоли / Cursor (занимает 5 секунд): Заходите в созданную папку и одной командой создаете «заглушки» для остальных ваших языков:
cd user/pages/имя-папки
touch default.ru.md default.uk.md default.pt-br.md

Всё делается в пару кликов:

  1. В левом меню админки перейдите в раздел Configuration (Настройки).
  2. Перейдите на вкладку System (Система).
  3. Найдите блок Languages (обычно он идет одним из первых). В поле Supported (Поддерживаемые языки) введите ваши коды через запятую в порядке приоритета. Например, если главный язык английский: en, ru, pt-br, uk. Чуть ниже найдите опцию Include default language code (Включать код дефолтного языка в URL). Если выключить: Главная страница на русском будет доступна просто по адресу site.com/, а английская — site.com/en/. Если включить: Русский будет site.com/ru/, английский — site.com/en/. Для SEO чище выключить (чтобы корень был главным языком без лишних редиректов).
  4. Нажмите кнопку Save в верхнем правом углу.