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

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

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
Не так. Любые плейсхолдеры откладываются. По-умолчанию парсер делает 10 циклов. На первом цикле не нашел, отложил на второй цикл и т.д. А вот с фильтрами ситуация другая. Парсер на первом же цикле проверит его и вернет соответствующее значение из then или else. Вот почему в данном топике не работало. Так как на втором цикле этого плейсхолдера уже нет, вместо него значение «false».
П.С. А кэшированные плейсхолдеры сработают только первый раз.
Во-первый, лучше использовать событие «OnDocFormSave», так как может возникнуть ситуация, когда тикет не сохранится (по ошибке или кто отменит в плагине). А уведомление о тикете отправится в любом случае.
Во-вторых, есть смысл использовать настройки и чанки Tickets.
if ($modx->event->name == 'OnDocFormSave' && $resource->class_key = 'Ticket') {
    $Tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null, $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', $scriptProperties);
    $ticket = $resource->toArray();
    $Tickets->sendTicketMails($ticket);
}
П.С. Не тестировал.
Дорогие друзья! Напоминаю, что при использование кэшированного плейсхолдера фильтр отработает только один раз. В следующий раз на странице будет выводится уже закэшированное значение. Для плейсхолдеров с фильтрами используйте "!".
[[!+topic_bar_cat:is=`1`:then=`true`:else=`false`]]
А не проще в модалке скопировать код чанка. Затем прямо тут же в коде написать тег нового чанка, выделить его и нажать Ctrl+Enter (главное не забыть удалить его потом или не сохранять чанк). В открывшемся окне нового чанка вставить код и сохранить.
Во-первых, никогда не правьте исходники. После обновления все пропадёт. Сделайте свой плагин с таким же условием.
Во-вторых, зачем нужен промежуточный сниппет? Можно в плагине сразу прописать нужные условия.
В-третьих, переменная $modx->resource пустая. Поэтому и условие не работает. В плагине доступна переменная $resource. Вот её и можно использовать.