А вот так:
<?php switch($modx->event->name) { case 'OnDocFormRender': $resource->set('syncsite', 0); break; case 'OnDocFormSave': if ($modx->event->params['mode'] != 'upd') {return;} $resource->_contextKey = $resource->context_key; $cache = $modx->cacheManager->getCacheProvider($modx->getOption('cache_resource_key', null, 'resource')); $key = $resource->getCacheKey(); $cache->delete($key, array('deleteTop' => true)); $cache->delete($key); break; }Создать плагин с любым именем, назначить ему события OnDocFormRender и OnDocFormSave, скопипастить.
Первое событие плагина убирает галочку «Очистить кэш» у формы редактирования ресурса. Если включить ее вручную — кэш будет очищен, как обычно.
Второе — получает обработчика кэша ресурсов и говорит ему удалить запись нужного документа. Все остальные не трогаются.
У простых ресурсов кэш хранится в одном файле, у сложных (где вызываются кэшируемые сниппеты) — в директории. Поэтому, мы чистим сначала директорию, а потом и файл, чтобы наверняка.
С компонентом Articles этот фокус не работает — там нет syncsite в админке.
← Следующая заметка
Тег spoiler для Jevix
Тег spoiler для Jevix
Предыдущая заметка →
Wayfinder и количество документов в контейнере
Wayfinder и количество документов в контейнере
?
Если открыть документацию rtfm.modx.com/display/revolution20/OnDocFormSave, то в Event Parameters мы видим resource, зачем его еще раз вытаскивать?
По-моему, это массив $modx->event->params, из которого я и получаю ресурс.
Если я не прав — покажите, как надо.
https://github.com/modxcms/revolution/blob/release-2.2/core/model/modx/processors/resource/create.class.php#L566
в параметр $params:
Кто, где, зачем и как выставляет $resource (и будет ли всегда выставлять, в дальнейших версиях) — мне неведомо. 100% я вижу одно — параметры, переданные для плагина, находятся вот тут: $modx->event->params.
Нравится брать их в $resource — вперед, никто вроде не мешает.
Спасибо!
можно вот так:
Спасибо за заметку, долго мучался пока не нашел эту вашу запись.
Да и вообще спасибо за все остальное!
Сегодня придумал красивее:
Раньше чистил через clearCache, там просто было. но он deprecated теперь.
Везде искал — нет примеров, только вот этот, ваш. (как-то криво на вы общаться)
Вот для себя составил формулу, сохраню тут в комментах себе на будущее :-):
А рецепт я взял с официального форума, только пришлось поразбираться с контекстами. Очень надеюсь, что ни примут мой коммит и можно будет тупо
Под какую он версию modx и что значит убирает галочку «Очистить кэш»? Имеется в виду, что он это делает в процессе сохранения документа или он убирает ее у всех документов в панели редактирования?
Дело в том, что этот плагин у меня не хочет работать. Сделал все как сказано в описании. Извините за такие вопросы, я только начал изучать эту cms.
Заранее спасибо!
Данный плагин проверялся на версии 2.2.5.
Он действует в 2 этапа: убирает галочку «Очистить кэш» при редактировании документа в админке, чтобы не обновлять кэш всех ресурсов, а потом при сохранении удаляет кэш текущей страницы.
Если вы только начинаете работать с MODX — Зачем вам такие вещи? Разбирайтесь сначала, не надо на кэширование сразу переходить.
С этим плагином начинает неконкретно работать авто публикация ресурсов. Так как весь кэш при сохранении ресурса не чистится, соответственно и не обновляется auto_publish в кеше (в нем хранится unixtime ближнего готовящегося к публикации ресурса).
Решение:
Добавить к событию OnDocFormSave:
Как в таком случае делается очистка кэша конкретного измененного ресурса,