Наумов Алексей

Наумов Алексей

Был в сети 28 июля 2026, 14:21
Заказы принимаю
Почитайте docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/caching
Раздел Programmatic (Custom) Caching

вам нужно вызвать снипеет некешированным в любом случае, а результат вычислений класть в кеш самостоятельно и все.

Я так делаю на одном из сайтов, получая данные из внешних источников. Кидаю их в кеш на сутки, любое сохранение в админке сайта на мой кеш не влияет.
// 1. Сначала получаем
$num_tv = $modx->resource->getTVValue('num_tv');
$text_tv = $modx->resource->getTVValue('text_tv');

// 2. меняем
$num_tv += 5;
$text_tv .= 'abc';
        
// 3. Устанавливаем TV
$modx->resource->setTVValue('num_tv', $num_tv);
$modx->resource->setTVValue('text_tv', $text_tv);

// 4. Сохраняем ресурс!!!
$modx->resource->save();

// 5. Выводим значения
echo '<p>-NUM_TV: '.$num_tv.'</p>';
echo '<p>-TEXT_TV: '.$text_tv.'</p>';
p.s. выводить из сниппета лучше через return! никакого echo.
Если в выводе есть html код — то лучше вынести его в чанк.
Привет.

Как отключить проверку при экспорте, которая выдает ошибку:
Ошибка! Структура каталога не прошла проверку, детали в логе modx
В логе:
Структура каталога не является валидной (базовый каталог (категория) и все его подкаталоги должны быть типа «Товар категория». Каталогам будет считаться любая «Товар категория» у которой нет родителя)

И да, читать умею)), у меня внутри категории есть несколько ресурсов с типом «Ссылка», они мне нужны для формирования меню. Не вижу причин не работать компоненту в подобных условиях, никто не просит его экспортировать эти ресурсы, это не товары и не категории.
Причем попробовал указать в настройке msimportexport.export.parents id категорий так, чтобы в дочерних были только товары — пофиг, все равно вызывается эта проверка.
Откройте /core/cache/elements/ далее внутри ищите файл с кешем своего сниппета (по id) и посмотрите, что внутри файла.

Именно это и будет вызываться при рендере страницы.

В обозначенных вами условиях (Если я не буду пересохранять сниппет, а также русурс из которого берутся значения для обработки сниппетом или глобально очищать кеш) должен срабатывать кеш, да.
Если ответа админа нет в html коде, пришедшем с сервера, то попробуйте условия, записанные в конце чанка tpl.ecMessages.Row, переписать на Fenom. Сейчас они для совместимости сделаны на довольно старом синтаксисе pdoTools.