Очистить кэш ресурса [MODX]

20 Февраля 2019
php

Ситуаци бывают разные, мы рассмотрим одну конкретную.

Например: мы добавили собственное поле view в таблицу site_content по примеру, создали плагин по примеру, и всё хорошо, всё работает.

Но это до тех пор, пока страница, где вызывается это поле, не окажется полностью закэшированной. С этого момента хоть и изменилось значение поля view на странице будет отображаться значение из кэша.

По этому разобравшись в кэше мы выяснили как очистить кэш у определенного ресурса.

// получаем массив с данными ресурса, например 123
$ resource=$ modx->getObject('modResource',123);
// запоминаем кэш ключ ресурса
$ cacheKey=$ resource->getCacheKey();
// по кэш ключу пересоздаем файлы кэша
$ modx->cacheManager->refresh(array(
    'resource' => array('key' => $ cacheKey),
));

Если необходимо очистить кэш многих ресурсов, то впринципе всё тоже самое.

// получаем массив с данными ресурсов, например 123 и 321
$ resources=$ modx->getCollection('modResource',array(
    'id' => array(123,321)
));
foreach ($ resources as $ key => $ resource) { 
    // запоминаем кэш ключ ресурса
    $ cacheKey=$ resource->getCacheKey();
    // по кэш ключу пересоздаем файлы кэша
    $ modx->cacheManager->refresh(array(
        'resource' => array('key' => $ cacheKey),
    ));
}