Revisions Pro¶
Важно
Продукты Premium требуют бесплатного плагина License Manager. Установите его и добавьте лицензию продукта, прежде чем устанавливать этот продукт.
Установка¶
Установить плагин Revisions Pro можно одним из трёх способов: способ через GPM (менеджер пакетов Grav) позволяет быстро установить плагин простой командой в терминале, ручной способ — с помощью zip-файла, а способ через админку — с помощью плагина Admin.
Зависимости¶
Для этого плагина должны быть установлены и включены следующие плагины:
- Grav CMS >= 1.7.0 — требование к ядру системы
- Admin Plugin >= 1.10.0 — для интерфейса управления версиями
- PHP >= 7.4 — со стандартными расширениями
Установка через GPM (предпочтительно)¶
Чтобы установить плагин через GPM, откройте терминал вашей системы (он же командная строка), перейдите в корень установки Grav и введите:
Плагин Revisions Pro будет установлен в папку /user/plugins внутри Grav. Его файлы можно найти по пути /your/site/grav/user/plugins/revisions-pro.
Установка вручную¶
Чтобы установить плагин вручную:
- Скачайте zip-версию этого репозитория
- Распакуйте её в
/your/site/grav/user/plugins - Переименуйте папку в
revisions-pro - Перейдите в папку плагина и выполните
composer install, чтобы установить зависимости
Теперь все файлы плагина должны находиться в:
Плагин Admin¶
Если вы используете плагин Admin, плагин можно установить напрямую: откройте меню Plugins и нажмите кнопку Add.
Конфигурация¶
Прежде чем настраивать этот плагин, скопируйте user/plugins/revisions-pro/revisions-pro.yaml в user/config/plugins/revisions-pro.yaml и редактируйте только эту копию.
Ниже приведена конфигурация по умолчанию и пояснения к доступным параметрам:
enabled: true # Включить плагин
# Параметры хранилища
max_revisions_per_page: 50 # Максимум версий на ресурс (0 = без ограничений)
auto_cleanup: true # Включить автоматическую ежедневную очистку
cleanup_older_than: 90 # Удалять версии старше X дней
# Переключатели фич
track_pages: true # Отслеживать изменения страниц
track_config: true # Отслеживать системную конфигурацию и конфигурацию сайта
track_plugins: true # Отслеживать конфигурацию плагинов и тем
# Параметры интерфейса
show_revision_count: true # Показывать значок с количеством версий на панели инструментов
Подробности конфигурации¶
Параметры хранилища¶
max_revisions_per_page¶
- Тип: целое число
- По умолчанию: 50
- Описание: максимальное количество версий, сохраняемых для каждого ресурса
- Примечания:
- Когда лимит достигнут, самые старые версии удаляются автоматически
- Установите 0, чтобы количество версий было неограниченным (не рекомендуется для боевого сайта)
- Применяется ко всем отслеживаемым типам контента
auto_cleanup¶
- Тип: логическое значение
- По умолчанию: true
- Описание: включить автоматическую очистку старых версий
- Примечания:
- Выполняется ежедневно в 3:00 по времени сервера через планировщик Grav
- Требует настроенного задания cron для планировщика
- Может также запускаться вручную из CLI
cleanup_older_than¶
- Тип: целое число
- По умолчанию: 90
- Описание: предельный возраст версий в днях для очистки
- Примечания:
- Версии старше этого срока удаляются при очистке
- Применяется и к автоматической, и к ручной очистке
- Учитывайте требования соответствия, устанавливая это значение
Переключатели фич¶
track_pages¶
- Тип: логическое значение
- По умолчанию: true
- Описание: отслеживать изменения содержимого страницы и метаданных страницы
- Примечания:
- Включает все типы страниц (стандартные, модульные и т. д.)
- Отслеживает изменения и содержимого, и метаданных страницы
- Поддерживает многоязычные страницы
track_config¶
- Тип: логическое значение
- По умолчанию: true
- Описание: отслеживать изменения системной конфигурации и конфигурации сайта
- Примечания:
- Отслеживает
/user/config/system.yamlи/user/config/site.yaml - Учитывает конфигурации, специфичные для окружения
- Необходим для отслеживания критичных изменений системы
track_plugins¶
- Тип: логическое значение
- По умолчанию: true
- Описание: отслеживать изменения конфигурации плагинов и тем
- Примечания:
- Отслеживает все файлы в
/user/config/plugins/и/user/config/themes/ - Помогает отслеживать изменения настроек плагинов с течением времени
- Полезен при отладке проблем с конфигурацией
show_revision_count¶
- Тип: логическое значение
- По умолчанию: true
- Описание: показывать значок с количеством версий на кнопке истории на панели инструментов
- Примечания:
- Показывает общее количество версий для текущего ресурса
- Обновляется автоматически при создании или удалении версий
- Можно отключить для более чистого интерфейса, если это предпочтительнее
Использование¶
Доступ к версиям¶
Плагин Revisions Pro без швов встраивается в интерфейс админки Grav. Открывайте версии кнопкой История (🕐) на панели инструментов админки при редактировании любого поддерживаемого типа контента.
Поддерживаемые типы контента¶
- Страницы — все типы страниц, включая:
- Стандартные страницы
- Модульные страницы
- Многоязычные страницы
-
Записи блога
-
Файлы конфигурации:
- Системная конфигурация (
system.yaml) - Конфигурация сайта (
site.yaml) -
Конфигурации для конкретных окружений
-
Конфигурации плагинов и тем:
- Все настройки плагинов
- Конфигурации тем
Панель версий¶
При нажатии кнопки истории с правой стороны выезжает панель, показывающая:
- Список версий: все версии текущего ресурса
- Отметка времени: когда было сделано изменение (со звездой ⭐ для текущей версии)
- Автор: пользователь, сделавший изменение
- Размер файла: размер версии
- Кнопки действий: просмотр, сравнение, восстановление, удаление
Просмотр версий¶
Нажмите кнопку Просмотр на любой версии, чтобы увидеть её полное содержимое в режиме только для чтения с подсветкой синтаксиса.
Сравнение версий¶
- Нажмите кнопку Сравнить на любой версии
- Выезжает дополнительная панель, показывающая:
- Сравнение различий бок о бок
- Зелёная подсветка добавлений
- Красная подсветка удалений
- Корректная подсветка синтаксиса (YAML, Markdown и т. д.)
- Вариант объединённого просмотра различий
Совет
Текущая версия всегда показывает сообщение «No changes» при сравнении с самой собой
Восстановление версий¶
- Нажмите кнопку Восстановить на той версии, которую хотите восстановить
- Подтвердите действие в появившемся диалоге
- Система:
- создаст резервную копию текущей версии
- восстановит выбранную версию
- перезагрузит страницу с сообщением об успехе
Совет
Перед восстановлением создаётся новая версия текущего состояния, поэтому операцию всегда можно отменить
Удаление версий¶
- Нажмите кнопку Удалить на любой версии (кроме текущей)
- Подтвердите удаление в диалоге
- Версия удаляется безвозвратно
Совет
Удалённые версии невозможно восстановить. Используйте с осторожностью.
Поддержка многоязычности¶
Revisions Pro полностью поддерживает фичи многоязычности Grav:
Как это работает¶
- Определение языка: автоматически определяет текущий язык по URL админки
- Раздельное отслеживание: каждая языковая версия отслеживается независимо
- Правильное хранение: версии сохраняются с языковыми суффиксами (например,
:fr,:de) - Язык по умолчанию: обрабатывает файлы языка по умолчанию с языковыми расширениями и без них
Версии для конкретного языка¶
При редактировании страницы на определённом языке: - отображаются только версии для этого языка - счётчик версий отражает только историю этого языка - восстановление затрагивает только текущую языковую версию
Пример¶
Для страницы, доступной на английском (по умолчанию) и французском:
- английские версии: typography.md.20240130-143022.rev
- французские версии: typography.fr.md.20240130-143022.rev
Команды CLI¶
Revisions Pro предоставляет мощные инструменты командной строки для обслуживания и автоматизации.
Команда очистки¶
Удаление старых версий по возрасту или другим критериям:
# Использовать настройки по умолчанию из конфигурации
bin/plugin revisions-pro cleanup
# Указать свой предельный возраст (переопределяет конфигурацию)
bin/plugin revisions-pro cleanup --days=30
# Предварительный просмотр: что будет удалено, без фактического удаления
bin/plugin revisions-pro cleanup --dry-run
# Тихий режим (вывод только ошибок)
bin/plugin revisions-pro cleanup --quiet
# Указать окружение
bin/plugin revisions-pro cleanup --env=production
Параметры команды¶
| Параметр | Описание | Пример |
|---|---|---|
--days=DAYS |
Удалить версии старше X дней | --days=7 |
--dry-run |
Предварительный просмотр удаления без выполнения | --dry-run |
--quiet |
Подавить вывод, кроме ошибок | --quiet |
--env=ENV |
Использовать конфигурацию конкретного окружения | --env=production |
--help |
Показать справку | --help |
Примеры автоматизации¶
Задание cron для ежедневной очистки¶
# Запускать очистку ежедневно в 2:00
0 2 * * * cd /path/to/grav && bin/plugin revisions-pro cleanup --quiet --days=30
Плановая очистка через планировщик Grav¶
# Добавьте в crontab, чтобы планировщик Grav запускался каждую минуту
* * * * * cd /path/to/grav && bin/grav scheduler 1>> /dev/null 2>&1
Архитектура хранилища¶
Понимание того, как хранятся версии, помогает при планировании резервных копий и решении проблем.
Расположение хранилища¶
Версии страниц¶
Хранятся рядом с файлами страницы:
/user/pages/02.typography/
├── default.md # Текущая страница
├── default.md.20240130-143022.rev # Версия
├── default.md.20240129-102015.rev # Более старая версия
├── default.fr.md # Французская версия
└── default.fr.md.20240130-145530.rev # Французская версия
Версии конфигурации¶
Хранятся рядом с файлами конфигурации:
/user/config/
├── system.yaml # Текущая конфигурация
├── system.yaml.20240130-143022.rev # Версия
└── system.yaml.20240129-102015.rev # Более старая версия
/user/config/plugins/
├── revisions-pro.yaml # Текущая конфигурация плагина
└── revisions-pro.yaml.20240130-143022.rev
Конфигурации для конкретных окружений¶
Индекс версий¶
Централизованный индекс отслеживает все версии для эффективного управления:
Этот индекс содержит метаданные обо всех версиях и используется для: - быстрого поиска версий - операций очистки - контроля лимита хранилища
Соглашение об именовании файлов¶
Версии используют единый шаблон именования:
Формат отметки времени: YYYYMMDD-HHMMSS
Справочник API¶
Для разработчиков, которые хотят интегрироваться с Revisions Pro программно.
Получение менеджера версий¶
// Получить экземпляр менеджера версий
$revisionManager = $grav['plugins']
->get('revisions-pro')
->revisionManager;
Типовые операции¶
Получение версий страницы¶
// Получить все версии страницы
$page = $grav['pages']->find('/typography');
$revisions = $revisionManager->getRevisions($page);
// Получить ограниченное количество версий
$revisions = $revisionManager->getPageRevisions($page->path(), 10);
Получение версий конфигурации¶
// Версии системной конфигурации
$revisions = $revisionManager->getRevisionsForRoute(
'system',
'config-system'
);
// Версии конфигурации плагина
$revisions = $revisionManager->getRevisionsForRoute(
'revisions-pro',
'plugin-config'
);
Создание версии вручную¶
// Создать версию текущего состояния страницы
$result = $revisionManager->createRevision($page, 'page');
// Создать версию конфигурации
$result = $revisionManager->createRevision($config, 'config-system');
Восстановление версии¶
// Восстановить по ID версии
$success = $revisionManager->restoreRevision($revisionId);
// Получить подробности результата восстановления
if ($success) {
$restoredFile = $revisionManager->getRevision($revisionId);
}
Удаление версии¶
// Удалить конкретную версию
$success = $revisionManager->deleteRevision($revisionId);
// Очистить старые версии
$deletedCount = $revisionManager->cleanupOldRevisions(30); // дней
События¶
Revisions Pro вызывает события, к которым можно подключиться:
// В вашем плагине
public static function getSubscribedEvents()
{
return [
'onRevisionCreate' => ['onRevisionCreate', 0],
'onRevisionRestore' => ['onRevisionRestore', 0],
'onRevisionDelete' => ['onRevisionDelete', 0]
];
}
public function onRevisionCreate($event)
{
$revision = $event['revision'];
$type = $event['type'];
// Пользовательская логика здесь
}
Решение проблем¶
Версии не создаются¶
- Проверьте состояние плагина
- Убедитесь, что плагин включён в конфигурации
-
Проверьте, что нужный переключатель отслеживания включён
-
Права доступа к файлам
- Веб-сервер должен иметь права на запись в папки контента
-
Проверьте права доступа к
/user/pages/,/user/config/и т. д. -
Проверьте журналы
Очистка не запускается автоматически¶
-
Проверьте конфигурацию
-
Проверьте планировщик
- Убедитесь, что планировщик Grav включён и работает правильно
-
Проверьте, что задание cron настроено:
-
Проверьте вручную
Проблемы с хранилищем¶
-
Следите за дисковым пространством
-
Скорректируйте параметры хранения
- Уменьшите
max_revisions_per_page - Сократите
cleanup_older_than - Запускайте ручную очистку чаще
Проблемы с производительностью¶
- Большое количество версий
- Подумайте об уменьшении
max_revisions_per_page -
Запустите очистку, чтобы удалить старые версии
-
Медленная загрузка панели
- Проверьте, нет ли у отдельных ресурсов чрезмерного количества версий
- Подумайте о внедрении пагинации (обратитесь в поддержку)
Проблемы, связанные с языками¶
- Отображаются версии не того языка
- Очистите кэш Grav:
bin/grav clear-cache -
Убедитесь, что в админке открыт URL правильного языка
-
Отсутствуют версии для языка
- Проверьте, что многоязычность настроена правильно
- Убедитесь, что для контента существуют языковые файлы
Режим отладки¶
Включите режим отладки для подробных сообщений об ошибках:
# user/config/system.yaml
debugger:
enabled: true
# Также проверьте журналы плагина
log:
handler: file
syslog:
facility: local6
Типичные сообщения об ошибках¶
| Ошибка | Причина | Решение |
|---|---|---|
| «No revisions found» | Версий пока нет | Внесите и сохраните изменение, чтобы создать первую версию |
| «Failed to create revision» | Проблема с правами доступа | Проверьте права доступа к файлам и папкам |
| «Revision not found» | Версия была удалена или ID неверен | Убедитесь, что версия существует в файловой системе |
| «Restore failed» | Права доступа к файлам или повреждение | Проверьте права доступа и целостность файлов |
Рекомендации¶
Управление хранилищем¶
- Устанавливайте разумные лимиты
- Рабочая версия сайта: 20–50 версий на страницу
-
Разработка: 10–20 версий на страницу
-
Регулярная очистка
- Включите автоматическую очистку
- Установите подходящие предельные сроки исходя из ваших потребностей
- Периодически следите за использованием хранилища
Вопросы безопасности¶
- Контроль доступа
- Доступ к версиям имеют только администраторы
-
Подумайте о дополнительных ограничениях по ролям
-
Конфиденциальные данные
- Учитывайте, что версии могут содержать конфиденциальные данные
- Удаляйте старые версии, содержащие устаревшую конфиденциальную информацию
- Рассмотрите более короткий срок хранения для файлов конфигурации
Оптимизация производительности¶
- Совместимость с кэшированием
- Revisions Pro полностью совместим с кэшированием Grav
-
Отключать кэширование на страницах с версиями не нужно
-
Большие сайты
- Используйте более агрессивные настройки очистки
- Подумайте об отключении значков с количеством версий для лучшей производительности
- Следите за размером индекса версий
Стратегия резервного копирования¶
- Включайте версии в резервные копии
- Файлы версий (
.rev) следует включать в резервные копии -
Индекс версий (
/user/data/revisions/index.json) важен -
Процедуры восстановления
- После восстановления резервной копии версии будут доступны
- После восстановления выполните
bin/grav clear-cache
Руководство по миграции¶
С ручных резервных копий¶
Если вы делали резервные копии файлов вручную:
- Установите и настройте Revisions Pro
- Ваш существующий контент станет «текущей» версией
- Новые версии будут создаваться автоматически в дальнейшем
- Старые ручные резервные копии можно хранить отдельно
Из другой системы контроля версий¶
Если вы переходите с Git или другой VCS:
- Revisions Pro дополняет Git, а не заменяет его
- Git — для кода, Revisions Pro — для контента
- Оба можно использовать одновременно
- Рассмотрите более короткий срок хранения для Revisions Pro, если используете Git
Поддержка¶
По вопросам, проблемам или запросам новых фич:
- Документация: сначала обратитесь к этому руководству
- GitHub Issues: сообщайте об ошибках по адресу задач
- Grav Discord: помощь сообщества в #premium-support
- Premium Support: доступна для владельцев лицензий
При сообщении о проблемах указывайте: - версию Grav - версию PHP - версию плагина - сообщения об ошибках из журналов - шаги для воспроизведения