24 апреля 2022, 10:20 Прочитал про размер кэша. Твоё удивление от непонимания. Что такое кэш? Это статичные данные. Если у тебя кэш на феноме в 10 раз меньше, то есть повод задуматься — всё ли закэшировалось? Отсюда и лишние запросы к БД. Конструкция {include 'чанк'} никогда не кэширует чанк. Просто с таким же успехом можно восхищаться пустой папкой кэша после того, как ты его отключишь. Для разработчиков / Сравнение шаблонизаторов MODX, Fenom и Smarty 20 0
24 апреля 2022, 10:12 Наверно поиском [[$ по таблицам контента, шаблонов и чанков. Или заюзать событие OnParse. Для разработчиков / Сравнение шаблонизаторов MODX, Fenom и Smarty 20 0
24 апреля 2022, 10:11 Точных сроков дать не могу. Как появится свободное время. Для разработчиков / Сравнение шаблонизаторов MODX, Fenom и Smarty 20 +1
20 апреля 2022, 16:27 Да, есть такое дело. Хотел исправить и забыл. В следующей версии постараюсь не забыть. Вопросы / Кэширование в pdotools 25 0
19 апреля 2022, 20:00 Это обычная системная настройка. Ей можно манипулировать в процессе загрузки. Создайте плагин на событие OnHandleRequest и в нем прописывайте нужное значение согласно вашей логике if ($modx->resource->id == 100) { $modx->setOption('pdotools_fenom_cache', false); // отключить кэширование чанков для ресурса 100 } Вопросы / Кэширование в pdotools 25 0
19 апреля 2022, 06:35 В базовой логике так. Но её можно изменить — снимаешь чекбокс «Очищать кэш» и в плагине на OnDocFormSave пишешь нужную логику. Очень гибко. Для разработчиков / Кэширование элементов в ZoomX 5 0
07 апреля 2022, 15:06 Нет, код не бессмысленный. Просто не очень качественный. Для разработчиков / Использование MODX вне MODX3 13 0
07 апреля 2022, 15:06 Я думал, что это какой-то разработчик с форума, который недавно открыл для себя MODX. А оказывается это Боб Рей. Удивлён. ( Для разработчиков / Использование MODX вне MODX3 13 0
07 апреля 2022, 06:52 Мда. Я надеюсь, что лайки поставили автору за труды, а не за это творчество (код). Лично мне, чтобы понять уровень, достаточно этого /* See if we're in MODX or not */ $inModx = isset($modx) && $modx instanceof modX; /* All the code below will only execute if we're not in MODX */ if (!$inModx) { $outsideModx = true; ...Код выше устанавливает переменную $outsideModx на тот случай, если нам нужно будет узнать позже в сценарии, работаем ли мы внутри MODX или нет.Т.е. переменная $inModx показывает, что мы внутри MODX. А переменная $outsideModx, которая является обратной к $inModx, показывает, что мы снаружи. Шикарно, правда? А получение ресурса и пользователя указанными методами говорит о том, что автор не понимает как это работает внутри. Для разработчиков / Использование MODX вне MODX3 13 +6
05 апреля 2022, 09:28 На самом деле выигрыш в скорости был не из-за Fenom, а за счёт pdoTools. Fenom как раз наоборот даёт лишнюю нагрузку и небольшой оверхед. Хотя в таблицах и указано наоборот. Лично я не смог повторить эти цифры. Да и тест, конечно, синтетический. Вопросы / Кешируются ли файловые сниппеты? 12 0
05 апреля 2022, 09:25 В одной из своих статей давал данные по скорости. Делал тест из pdoTools. Прирост был около 50%. На самом деле это синтетический тест. Но общий выигрыш понятен. Вопросы / Кешируются ли файловые сниппеты? 12 0
03 апреля 2022, 18:48 Много раз уже всем объяснял почему так происходит. Fenom используется в pdoTools не как полноценный шаблонизатор, а как дополнительный парсер шаблонизатора MODX. Т.е. контент парсится двумя шаблонизаторами! Но главным является именно последний. А для него нет понятия «файловый сниппет». Есть обычный сниппет, который хранится в БД. Но сниппет — это php код. А код, чтобы он выполнился, нужно подключать через конструкцию include. Для этого создается файл в папке includes/elements/modsnippet/. И уже он потом подключается. Когда вызывается файловый сниппет, pdoTools создаёт обычный сниппет MODX с именем в виде хеша. И MODX подготавливает его к исполнению — сохраняет в кэш, чтобы заинклюдить. Но хочу отметить, что это не кэш результата сниппета. Это кэш кода сниппета. Т.е. создается файл для кэширования другого файла!!! Сам файловый сниппет никогда не кэшируется! Даже если ты очень преочень захочешь. Это и куча других косяков реализации Fenom заставила меня написать ZoomX. В нём я заморочился этой темой и написал отдельный механизм для файловых элементов. Плюс они могут кэшироваться. Плюс за всё отвечает только один шаблонизатор. Поэтому я всем разработчикам, стремящимся работать по фуншую, советую ставить pdoTools из-за его сниппетов (Fenom сразу выключить) и ZoomX из-за правильного механизма шаблонизации и роутинга. Вопросы / Кешируются ли файловые сниппеты? 12 +6
03 апреля 2022, 07:55 Да, я продаю компонент, написанный Сергеем Шлоковым. Мы договорились делить деньги пополам ))) Новости и события / oneBooking. Последние новости 8 +2
06 марта 2022, 11:33 Просто не будет элемента meta. В следующей версии сделаю возможность выводить свой формат данных. Пошаговые инструкции / ZoomX Быстрый старт - разбираем на практике. Часть первая. 5 0
06 марта 2022, 08:56 Сделаю несколько пояснений. pdoTools никакого отношения к теме статьи не имеет и для ZoomX не нужен. Я использую его лишь для того, чтобы работать с разметкой шаблона через IDE.Это только для тех, кто хочет работать с шаблонизатором Fenom. Если есть желание работать в режиме фреймворка, то можно работать с шаблонизатором Smarty, который идёт с MODX из коробки. Я много раз уже говорил, что Fenom в pdoTools — это костыль, который вроде как добавляет возможности нормального шаблонизатора, но работает по правилам MODX шаблонизатора — многократный парсинг и компиляция контента, который ему подсовывает MODX шаблонизатор. В правильном режиме php шаблонизатор парсит страницу один раз, компилирует её в php файл и использует его при следующих запросах, не тратя время на повторный парсинг и компиляцию. Если в роуте не указан метод контроллера, запрос всегда обращается к главному методу index()Сначала проверяется наличие магического метода __invoke. Если его нет, то будет вызван метод index. Метод jsonx всегда возвращает объект с тремя блоками.Блок meta можно отключить в системной настройке zoomx_include_request_info Пошаговые инструкции / ZoomX Быстрый старт - разбираем на практике. Часть первая. 5 +4
13 февраля 2022, 09:48 Если внимательно прочитать, то так и написано. Просто не совсем корректно. getService() загружает файл класса (вызывая loadClass()), но также добавляет класс к объекту $modx, вы cможете вызывать его методы с помощью $modx->className->methodName(). Правильнее было бы сказать, что к объекту $modx добавляется не класс, а экземпляр указанного класса. Он же возвращается методом getService(). Соответственно получить доступ к этому экземпляру можно не через $modx->className, а через $modx->aliasName. Ниже в статье именно так и будет указано. Получается небольшое разночтение. Т.е. псевдоним вы можете указать любой (первый параметр), а вот класс (второй параметр) должен быть точным. Для разработчиков / Понимание addPackage, loadClass и getService 8 +1
23 января 2022, 20:06 Запишите ишу, чтобы зафиксировать проблему. Новые дополнения и их версии / pdoTools3 для MODX3 24 +2
17 января 2022, 21:28 Кстати есть ли возможность проверить используется ли на странице где то стандартный парсер?Он используется всегда. Готовые решения / Было бы неплохо сделать конвертер MODX в Fenom. Я начал, но вряд ли смогу доделать 40 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? В любом случаем стандартный флоу минишоп2 рассчитан на оплату по ссылке, т.е. чтобы получить информацию об оплате, нужно чтобы заказ существовал. Чтобы сделать иначе, нужно использ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Просто с таким же успехом можно восхищаться пустой папкой кэша после того, как ты его отключишь.
Т.е. переменная $inModx показывает, что мы внутри MODX. А переменная $outsideModx, которая является обратной к $inModx, показывает, что мы снаружи. Шикарно, правда?
А получение ресурса и пользователя указанными методами говорит о том, что автор не понимает как это работает внутри.
Fenom используется в pdoTools не как полноценный шаблонизатор, а как дополнительный парсер шаблонизатора MODX. Т.е. контент парсится двумя шаблонизаторами! Но главным является именно последний. А для него нет понятия «файловый сниппет». Есть обычный сниппет, который хранится в БД. Но сниппет — это php код. А код, чтобы он выполнился, нужно подключать через конструкцию include. Для этого создается файл в папке includes/elements/modsnippet/. И уже он потом подключается.
Когда вызывается файловый сниппет, pdoTools создаёт обычный сниппет MODX с именем в виде хеша. И MODX подготавливает его к исполнению — сохраняет в кэш, чтобы заинклюдить.
Но хочу отметить, что это не кэш результата сниппета. Это кэш кода сниппета. Т.е. создается файл для кэширования другого файла!!! Сам файловый сниппет никогда не кэшируется! Даже если ты очень преочень захочешь.
Это и куча других косяков реализации Fenom заставила меня написать ZoomX. В нём я заморочился этой темой и написал отдельный механизм для файловых элементов. Плюс они могут кэшироваться. Плюс за всё отвечает только один шаблонизатор. Поэтому я всем разработчикам, стремящимся работать по фуншую, советую ставить pdoTools из-за его сниппетов (Fenom сразу выключить) и ZoomX из-за правильного механизма шаблонизации и роутинга.
Это только для тех, кто хочет работать с шаблонизатором Fenom. Если есть желание работать в режиме фреймворка, то можно работать с шаблонизатором Smarty, который идёт с MODX из коробки. Я много раз уже говорил, что Fenom в pdoTools — это костыль, который вроде как добавляет возможности нормального шаблонизатора, но работает по правилам MODX шаблонизатора — многократный парсинг и компиляция контента, который ему подсовывает MODX шаблонизатор. В правильном режиме php шаблонизатор парсит страницу один раз, компилирует её в php файл и использует его при следующих запросах, не тратя время на повторный парсинг и компиляцию.
Сначала проверяется наличие магического метода __invoke. Если его нет, то будет вызван метод index.
Блок meta можно отключить в системной настройке zoomx_include_request_info
Правильнее было бы сказать, что к объекту $modx добавляется не класс, а экземпляр указанного класса. Он же возвращается методом getService().
Соответственно получить доступ к этому экземпляру можно не через $modx->className, а через $modx->aliasName. Ниже в статье именно так и будет указано. Получается небольшое разночтение. Т.е. псевдоним вы можете указать любой (первый параметр), а вот класс (второй параметр) должен быть точным.