Skip to content

Всё для WordPress, веб-разработки — и не только

✏️ Редактируем страницы Grav из фронтенда: установка и права доступа

✏️ Редактируем страницы Grav из фронтенда: установка и права доступа

Контент-менеджер зашёл в админку, нашёл страницу в списке из 50 других, открыл редактор, поправил заголовок, сохранил, вернулся на сайт, обновил вкладку. Шесть кликов ради одной правки. Для Grav CMS существует простое решение, плагин Editable with ContentTools встраивает WYSIWYG-редактор прямо на страницу сайта: открыли, нажали «изменить», поправили текст и сохранили обратно в Markdown-файл без захода в админку.

Плагин не обновлялся с 2022 года (автор официально прекратил поддержку), но работает стабильно на Grav 1.7 и покрывает базовый сценарий, редактирование простых Markdown-страниц без динамической логики. Установка займёт пять минут, дальше править тексты на фронтенде станет проще в разы.

Ниже, полная инструкция от установки до прав доступа, с разбором ограничений и альтернативой (Fred).

💡 Быстрый обзор:

  • Установить плагин через GPM или zip-архив и скопировать конфиг.
  • Настроить git-sync для фиксации правок в репозитории (опционально).
  • Разметить редактируемые области шорткодом editable с уникальными именами.
  • Выдать права site.editable фронтенд-пользователям.
  • Объединить сессии админки с фронтендом через session.split: false.
  • Учитывать ограничение: только чистый Markdown, без Twig и динамики.

Установка: через GPM или вручную

Плагин ставится через Grav Package Manager, стандартный способ для любого дополнения в Grav:

1bin/gpm install editable-contenttools

Команду запускайте из корневой папки сайта (там, где лежит bin/). GPM сам скачает последнюю версию и распакует в /user/plugins/editable-contenttools.

Альтернативно можно поставить вручную: скачайте zip-архив с GitHub, распакуйте в /user/plugins/ и переименуйте папку в editable-contenttools (без суффикса -master). Структура должна выглядеть так: /user/plugins/editable-contenttools/editable-contenttools.php.

Копируем конфиг в безопасное место

После установки обязательно скопируйте конфигурационный файл в пользовательскую директорию:

1cp user/plugins/editable-contenttools/editable-contenttools.yaml user/config/plugins/editable-contenttools.yaml

Этот шаг важен: если настройки останутся в папке плагина, они сбросятся при обновлении через GPM. Альтернативный вариант, установка через Admin-панель Grav (раздел Plugins → Add), в этом случае система сама создаёт конфиг в user/config/plugins/ и копировать вручную не нужно.

Настройка: три опции конфига

Файл editable-contenttools.yaml содержит три параметра:

1enabled: true
2git-sync: false
3git-sync-mode: foreground

enabled, включает плагин. Без enabled: true редактор не появится на фронтенде, даже если права выданы. По умолчанию true.

git-sync, запускает синхронизацию с Git-репозиторием после каждого сохранения. Работает только при установленном плагине Git Sync. Если ваш сайт живёт в Git и вы хотите фиксировать каждое изменение в истории, ставьте true. Иначе оставьте false.

git-sync-mode, определяет, ждать ли завершения синхронизации перед возвратом управления пользователю. foreground означает, что кнопка «Сохранить» разблокируется только после завершения коммита и пуша. background работает асинхронно, но на некоторых Linux-серверах могут быть проблемы с фоновыми процессами. Для большинства сценариев достаточно foreground.

Разметка редактируемых областей: шорткод [editable]

Пример шорткода [editable] в Markdown-файле страницы Grav

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

1[editable]
2## Заголовок раздела
3
4Текст, который можно редактировать из фронтенда.
5[/editable]

Страница может содержать любое количество таких областей. Каждая область должна иметь уникальное имя, иначе ContentTools не поймёт, куда сохранять изменения.

Параметр name: обязательная уникальность

По умолчанию плагин назначает имена автоматически (region-0, region-1 и так далее), но лучше задавать осмысленные имена вручную:

1[editable name="hero-block"]
2## Главный заголовок
3
4Текст, который можно редактировать.
5[/editable]

При первом сохранении через фронтенд плагин автоматически добавит параметр name в шорткод, если его не было. На практике проще прописать имена сразу при разметке, это упрощает отладку (вы видите, какой блок редактируете в инструментах разработчика браузера).

После разметки и сохранения страницы зайдите на сайт под пользователем с правом site.editable, нажмите на иконку карандаша слева и редактируйте текст как в обычном текстовом редакторе. Удерживайте Shift примерно три секунды, подсветятся все доступные для правки регионы.

Попробовать можно на демо-сайте плагина (сохранение отключено, Grav 1.7.46).

Права доступа: фронтенд и бэкенд

Чтобы пользователь увидел иконку карандаша, ему нужны права на редактирование. Правила разные для фронтенд-пользователей (контент-менеджеры) и бэкенд-пользователей (администраторы).

Фронтенд-пользователи

Пользователь должен уметь войти в систему через плагин Grav Login или Private Grav. Затем в файле учётной записи (user/accounts/username.yaml) добавьте:

1access:
2 site:
3 login: 'true'
4 editable: 'true'

Без разрешения site.editable иконка карандаша не появится, даже если пользователь залогинен и имеет другие права.

Бэкенд-пользователи (администраторы)

По умолчанию Grav разделяет сессии админки и фронтенда. Чтобы администратор мог редактировать страницы прямо на сайте (не заходя в админку), установите в system.yaml (или через админ-панель Configuration → System):

1session:
2 split: false

Это объединит сессии: вход в админку автоматически даст доступ к фронтенд-редактору. Администратору также потребуется разрешение admin.super или admin.pages в файле учётной записи.

Если после входа иконка не появилась, проверьте кеширование админа:

1admin:
2 super: 'true'
3 login: 'true'
4 cache: 'false'

Параметр cache: false отключает кеш для админа и может решить проблему с невидимой иконкой.

Ограничения: что плагин НЕ умеет

Плагин работает исключительно с чистым Markdown. Это архитектурное ограничение, а не баг: ContentTools редактирует HTML в браузере, а плагин конвертирует HTML обратно в Markdown. В процессе любая динамическая разметка будет испорчена. Не редактируйте через ContentTools контент, который:

  • собирается шаблонами Twig (например, модульные страницы: дочерние блоки вставляются родителем динамически, плагин не видит их источник);
  • внедряется другими плагинами (Page Inject и аналоги вставляют контент из других страниц, это односторонний процесс);
  • меняется через JavaScript в браузере (слайдеры, аккордеоны и другие интерактивные элементы будут конвертированы в статичный HTML);
  • содержит спецтеги Grav Markdown (изображения с параметрами ?lightbox и ?resize будут повреждены при конвертации HTML → Markdown, параметры обработки исчезнут).

Правила безопасности простые:

  • Держите изображения и сложные шорткоды вне редактируемых областей.
  • Делайте области небольшими, количество не ограничено, лучше 10 маленьких блоков, чем один большой с рисками.
  • Тестируйте на копии поста или staging-окружении перед тем, как дать доступ редакторам.
  • Заметили разницу в Markdown-разметке между версией с иконкой карандаша и без, выносите этот фрагмент за пределы [editable].

Альтернатива: плагин Fred

Если функциональности Editable with ContentTools не хватает, посмотрите на Fred, более новый фронтенд-редактор для Grav, тоже на базе ContentTools. Из отличий:

  • Загрузка изображений через диалог (с поворотом и базовой обработкой).
  • Авто-обёртка контента через событие onPageProcessed, меньше ручной разметки шорткодами.
  • Активная разработка: автор принимает issues на GitHub и дорабатывает функционал.

Установка через клонирование репозитория в /user/plugins/fred:

1cd user/plugins
2git clone https://github.com/BugHunter2k/grav-plugin-fred.git fred

Права задаются аналогично: site.editor: true в учётной записи пользователя (обратите внимание, не site.editable, а site.editor).

И Editable with ContentTools, и Fred решают одну задачу, дают контент-менеджеру инструмент быстрой правки без захода в админку. Первый подойдёт, если нужен простой отлаженный инструмент для Markdown-страниц без экспериментов. Второй, если хотите больше автоматики и готовы к возможным шероховатостям активной разработки.

Видео: как работает ContentTools

Двухминутная демонстрация редактирования страницы Grav в браузере: автор показывает, как выделяются редактируемые области, вносятся изменения и сохраняются обратно в Markdown. Хороший способ увидеть плагин в действии до установки.

⁉️🤔 Частые вопросы

Почему иконка карандаша не появляется после установки?

Проверьте четыре пункта. Первое, enabled: true в конфиге плагина (user/config/plugins/editable-contenttools.yaml). Второе, пользователь должен иметь право site.editable в файле учётной записи. Третье, для бэкенд-пользователей session.split должен быть false в system.yaml. Четвёртое, очистите кеш Grav: bin/grav clear-cache. Обычно проблема либо в правах, либо в split-сессиях.

Можно ли редактировать модульные страницы?

Нет. Модульные страницы собираются из дочерних через Twig-шаблоны, это односторонний процесс, плагин не может «разобрать» результат обратно на части. На фронтенде вы видите готовый HTML, но источник (отдельные Markdown-файлы дочерних модулей) находится в других папках, плагин не знает, куда сохранять изменения. Для модульных страниц используйте стандартный Admin-интерфейс Grav.

Что будет, если оставить изображение внутри [editable]?

Спецтеги Grav Markdown для изображений (с параметрами ?lightbox, ?resize, ?cropResize) будут повреждены при конвертации HTML в Markdown. Само изображение останется на месте (тег <img> конвертируется в обычный Markdown ![](url)), но параметры обработки исчезнут. Вывод: картинки с параметрами всегда снаружи редактируемой области. Если изображение простое (без параметров), технически можно оставить внутри, но на практике безопаснее выносить все медиа за пределы [editable].

Плагин заброшен автором, безопасно ли его использовать?

Автор официально объявил об отказе от поддержки в 2022 году, последний коммит датирован августом 2024 года (обновление совместимости с Grav 1.7). Плагин стабилен на Grav 1.7 и не затрагивает критичные для безопасности компоненты: он работает только с Markdown-контентом и не имеет доступа к серверным операциям. Если планируете переход на Grav 2.0, лучше смотреть в сторону Fred или ждать официального решения для фронтенд-редактирования (на форуме обсуждаются новые подходы на базе TinyMCE и Prosemirror).

Чем отличается Editable with SimpleMDE от версии с ContentTools?

Editable with SimpleMDE использует тот же подход (фронтенд-редактирование), но вместо визуального редактора ставит Markdown-редактор SimpleMDE с live-preview. Подойдёт тем, кто предпочитает писать разметку руками и хочет видеть результат справа от редактора, а не в режиме WYSIWYG. Оба плагина от одного автора (bleutzinn) и оба заброшены с 2022 года.

Стоит ли ставить фронтенд-редактор для Grav в 2026 году

Если ваш сайт на Grav 1.7 состоит из простых Markdown-страниц и контент-менеджеры устали заходить в админку ради пары правок, ставьте Editable with ContentTools. Пять минут на установку, минимум конфигурации: редактирование становится однокликовым. Открыли страницу, нажали карандаш, поправили текст, сохранили. Никаких поисков в списке страниц, никаких переключений вкладок.

Для новых проектов или при планировании перехода на Grav 2.0 (релиз ожидается в 2026 году, хотя точной даты нет) присмотритесь к Fred: он активнее развивается и с большей вероятностью получит совместимость со второй версией CMS. В любом случае фронтенд-редактирование экономит десятки кликов и минуты времени на каждой правке, особенно заметно на сайтах с частыми обновлениями контента. Попробуйте на тестовом окружении и решите, насколько такой подход ускоряет ваш рабочий процесс.