Сергей Шлоков
С нами с 31 января 2013; Место в рейтинге пользователей: #545 минут назад
Этот способ (через файл):
-работает если есть живой админ
-работает если он в группе
-работает если контекст manager не поломан
-работает если пол...
Почему в новых версиях MODX не работает сброс пароля через MD5 и как восстановить доступ в manager 6
4 часа назад
На сайтах B и C пишешь плагин на событие OnDocFormSave. В этом плагин отправляешь запрос с помощью CURL с данными ресурса на сайт A. На сайте A обраба...
Сбор новостей с разных сайтах на один общий 1
Сегодня в 11:53
Но у меня и без всяких ВПНВот я так и знал))
Как перестанет работать без впн, так мой метод пригодится)
Инструкция: Настройка SOCKS5 прокси в MODX3 для работы с репозиторием 10
Вчера в 04:41
Есть проблема с расширением, убирает из контекстного меню «Open with Live Server», с файлами шаблонов понятно это допустимо, хотя и не очень нужно, но...
Встречайте VSCode IntelliSense for MODX 39
21 января 2026, 12:55
Смотри плагины ну и край создай свой плагин к примеру CleanOutput и привяжи к событию OnWebPagePrerender
$output = &$modx->event->_output;
$...
Пять пустых строк в начале кода любой страницы! 2
19 января 2026, 19:43
Спасибо! Попробую.
Доступ к репозиторию MODX на digitaloceanspaces.com заблокирован для российских IP? 3
19 января 2026, 18:57
Получилось так:
&sortbyTV=`FIELD(availability, 1,0,3,2 )`
Как задать ручную сортировку в mFilter2 1
19 января 2026, 09:29
зайти в настройки компонента, убрать значение у «yasmartcaptcha_service_js», а скрипт подключить вручную
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 34
Просто с таким же успехом можно восхищаться пустой папкой кэша после того, как ты его отключишь.
Т.е. переменная $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. Ниже в статье именно так и будет указано. Получается небольшое разночтение. Т.е. псевдоним вы можете указать любой (первый параметр), а вот класс (второй параметр) должен быть точным.