OnLoadWebDocument, как узнать, что ресурс из кеша?

Собственно нужно, чтобы код плагина не выполнялся, если ресурс из кеша. Есть какие-либо маркеры этого?
Андрей Коробков
06 апреля 2017, 10:09
modx.pro
1
1 599
0

Комментарии: 4

Андрей Коробков
07 апреля 2017, 15:59
0
Для чего мне это нужно.
Задача плагина — взять не распарсенный content ($modx->resource->get('content');), найти в нем картинки, те, у которых реальный размер больше отображаемого (заданный через width/height) — пропустить через phpthumbon (или подобный), заменить на шаблон типа <img src=«thumb_image»....>. Далее $modx->resource->set('content', $content);… Сам код написан и работает.
Проблема в том, что, когда ресурс берется из кеша — $modx->resource->get('content') — получает данные с уже замененными картинками. Временно проблему решил проверкой папки в которой картинка, но хотелось бы сделать правильно. Подскажите, пожалуйста
    Володя
    07 апреля 2017, 16:27
    1
    +2
    можно например вот так
    github.com/modxcms/revolution/blob/fbf126690f6ce903faeaeb9f1d958211fc2203c9/core/model/modx/processors/resource/data.class.php#L62-L73
    public function getCacheSource() {
            $this->resource->_contextKey= $this->resource->get('context_key');
            $buffer = $this->modx->cacheManager->get($this->resource->getCacheKey(), array(
                xPDO::OPT_CACHE_KEY => $this->modx->getOption('cache_resource_key', null, 'resource'),
                xPDO::OPT_CACHE_HANDLER => $this->modx->getOption('cache_resource_handler', null, $this->modx->getOption(xPDO::OPT_CACHE_HANDLER)),
                xPDO::OPT_CACHE_FORMAT => (integer) $this->modx->getOption('cache_resource_format', null, $this->modx->getOption(xPDO::OPT_CACHE_FORMAT, null, xPDOCacheManager::CACHE_PHP)),
            ));
            if ($buffer) {
                $buffer = $buffer['resource']['_content'];
            }
            return !empty($buffer) ? $buffer : $this->modx->lexicon('resource_notcached');
        }
    то есть проверяется есть ли _content, если есть ресурс из кеша
      Володя
      07 апреля 2017, 16:35
      +1
      можно вообще сделать так наверно
      $isCache = $modx->resource->get('_content');
      if (!is_null($isCache)) {
          // из кеша 
      }
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4