Сергей Шлоков

Сергей Шлоков

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
Ещё забыл написать про новый метод кэшменеджера — remember. Он пригодится в тех случаях, когда нужно получить значение из кэша, и если кэш пусто, то сохранить данные в кэш.
Например, получаем общее количество активных пользователей.
cache()->remember('count_users', 300, function() use ($modx) {
    return $modx->getCount('modUser', array('active' => 1));
});
Если в кэше пусто, то выполняется замыкание, в котором возвращается вычисленное значение. Затем это значение сохраняется в кэше на 5 минут. И пока не истечет это время при последующих запросах количество пользователей будет запрашиваться из кэша.

Игнор скорее всего глючит на вложенных уровнях — у меня на первом уровне (в шаблоне) и в ресурсе все гуд. А у тебя, наверно, через феном вызывается сниппет, который вызывает чанк с игнором. Чисто предположение.
Но как им передавать такие чанки в параметрах, используя синтаксис Fenom?
Никак. Метод $modx->getChunk(), который используют все эти сниппеты, не умеет работать с файловыми чанками и не понимает данный синтаксис. Это умеет делать только метод $pdoTools->getChunk().

П.С. Ну и функция chunk() из библиотеки modHelpers.
Вообще, логику в чанках лучше не определять. Если рассматривать MODX с точки зрения MVC концепции (насколько это возможно), то чанк — это вид. И среди программистов не принято в видах прописывать логику. Для этого есть контроллеры. В MODX это лучше делать в плагинах
// Плагин
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
            $fenom->addAccessorSmart("product", "data", Fenom::ACCESSOR_PROPERTY);
            $fenom->data = [
                "name" => '', // Тут имя определяете по вашему условию
            ];
    break;
}
А в чанке просто вызывать
Фильтры для {$.product.name}
В данном случае всё зависит от железа. Про какие-то ограничения с пользователями я не слышал, а вот с ресурсами была такая проблема. На хабре была статья Николая Ланца про это. По моему свыше 300 тыс. ресурсов MODX уже обработать не может. Нужно отключать кэширование карты алиасов и чего-то там ещё. В общем выкручиваться.