<?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 в админке.
Источник: bezumkin.ru/sections/tips_and_tricks/351/
0 комментариев