Для чего это нужно
Данное решение позволяет добавить указание версии файлов, это нужно для управления сбросом кэша на стороне клиентов сайта. Т.е если мы меняем версию файла, клиентский кэш можно сказать сбрасывается для этого файла, это позволяет нам отображать сайт в актуальном внешнем виде.
Для каких файлов требуется указывать версию
Версия файла указывается для тех файлов, которые мы часто изменяем, нет смысла заставлять пользователей каждый раз перекачивать например библиотеки которые мы используем.
Например, мы можем указать версию для файла пользовательских скриптов и стилей, а библиотеки не трогать.
Пример
В системных настройках в разделе core (/manager/?a=system/settings) создаём новый параметр:
Ключ - cache_version
Имя - Версия кэша
Описание - Служит для обновления файлов на стороне клиентов
Значение - Любой набор цифр, перезапишется при первом сбросе на нормальное
Тип поля - Текстовое поле
Пространство имён - core
Словарь - Кэширование
Создаем плагин на событие OnBeforeCacheUpdate . Таким образом плагин будет срабатывать когда мы будем очищать кэш сайта.
<?php if ($modx->event->name == 'OnBeforeCacheUpdate') { $now = date("mdyHis"); $cache_version = $modx->getObject('modSystemSetting', 'cache_version'); $cache_version->set('value', $now); $cache_version->save(); } ?>
Теперь остаётся лишь применить к нужным файлам, например
<link rel="stylesheet" href="/assets/template/css/main.css?v=[[!++cache_version]]"> <script defer src='/assets/template/js/main.js?v=[[!++cache_version]]'></script>
В исходном коде страницы мы увидим подключение в таком формате
<link rel="stylesheet" href="/assets/template/css/main.css?v=040222171829">
При очистке кэша в админ панели будет так же меняться версия файлов и при посещении сайта файлы у клиентов скачаются заново.