Droug

Droug

Был в сети 02 июля 2019, 09:25
Заказы не принимаю
Я тоже слазил в код и пишу как раз о том, что для залогиненых всё ок, админы — админы, неадмины — нет, а вот на гостей такая проверка стала возвращать true… И, поскольку в pdoTools функция не менялась, то изменилось поведение самого xPDO и он начал возвращать 1. По кр. мере у меня так на нескольких сайтах на разных площадках.

P. S.: $_modx->user.id — это и есть текущий пользователь, т.е. 0|ismember и $_modx->user.id|ismember — эквивалентные записи.
Тогда уж mgr (и это, кстати, не дает понять кто в какой группе, а лишь говорит кто где залогинен), но вопрос про то, что с какой-то версии, скорее всего с 2.5.2
{0|ismember:'Administrator'}
сам по себе возвращает true для всех гостей…
Пожалуй, самым простым, но не самым правильным решением будет два вызова pdoResources.
В первом вызове выбрать список всех возможных каталогов, условно как-то так:
[[pdoResources:replace=`||==,`?
    &tvFilters=`cities==%#[[*id]]#%`
    &parents=`ид_родителя_предложений`
    &includeTVs=`cities,catalog`
    &tpl=`@INLINE {{+tv.catalog}}`
    &outputSeparator=`,`
    &toPlaceholder=`cataloglist`
]]
А затем сделать выборку каталогов по списку полученных ресурсов:
[[pdoResources:default=`No results`?
    &parents=`ид_родителя_каталогов`
    &resources=`[[+cataloglist]]`
    &includeTVs=`name,year,author`
    &processTVs=`1`
    &sortby=`{ "pagetitle":"ASC" }`
    &tpl=`@INLINE <a href="[[+uri]]?city=[[*alias]]">[[+pagetitle]] в [[*longtitle]]</a> ||`
]]
Примерно…

P.S.: Мне не совсем ясно, зачем там name,year,author и зачем их процессить, если они все равно в шаблоне не используются, ну да ладно.
Эм, ну pdoResources как бы не занимается фильтрацией результатов, он только формирует запрос к бд и оборачивает результаты выборки шаблоном. А в БД migx поля хранятся в виде JSON в одном поле, так что кроме LIKE и RLIKE фильтровать тут особо и нечем.

P.S.: Возможно, надо копать в сторону MIGXdb, там данные хранятся в отдельной таблице и вариантов фильтрации уже больше.