тогда site/web/resources/getdata и передать параметр 'where'=>['id:in'=>[1,2,5,22...]] или 'where'=>['parent:in'=>[1,2,5,22...]] или что-то еще из синтаксиса SQL по правилам xPDO
Я Это и имел ввиду, что не правильно подходит к решению задачи) я бы так не стал делать :D
Не совсем понятно объяснил наверно. Мне нужно не все документы вывести, а только определенные. В wayfinder'е есть параметр — includeDocs, где указываются id ресурсов для вывода. Так вот, ресурсы в корне — выводятся, в контейнерах — нет
ресурсы находящиеся в корне — выводятся, остальные — нет (родители которых скрыты и не опубликованы) {$params=[ 'startId'=>0, 'level'=>2, //уровень вложенности 'ignoreHidden'=>true, //добавить к выборке скрытые от показа в меню 'showUnpublished'=>true //добавить к выборке неопубликованные ]} {processor action='site/web/getmenu' ns=modxsite params=$params assign=result} Все в исходниках :)
так как столкнулся с проблемой вывода меню с помощью wayfinder'а, решил попробовать этот способ. а проблема следующая: меню формируется из ресурсов, часть которых находится в корне, часть в контейнерах (которые не опубликованы и скрыты, нужно для общей каталогизации дерева ресурсов, чтобы менеджерам было удобно), и получается то, что ресурсы находящиеся в корне — выводятся, остальные — нет (родители которых скрыты и не опубликованы). Если можно решить эту проблему с помощью данного процессора, то как тогда сделать выборку по тв? Либо где и что в wayfinder'е нужно подкрутить?
Как можно поменять условие выборки не по шаблону, а по тв параметру?
JSON прогоняется через $modx->fromJSON($json), на выходе получается массив условий, чтобы он был верно разобран нужно соблюдать определенные правила, об этом подробнее можно почитать тут rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where Собственно все можете проверять в консоли modx. $where = array(
array(
"available:="=>"0"
,"AND:toOrder:="=>"1"
)
,"OR:available:="=>"1"
);
$c = $modx->newQuery('modResource');
$c->where($where);
$c->select('id');
$c->prepare()
echo $c->toSQL(); Вернет: SELECT id
FROM modx_site_content
AS modResource
WHERE ( ( modResource
.available
= '0' AND modResource
.toOrder
= '1' ) OR modResource
.available
= '1' ) А если сделать вот так: echo $modx->toJSON($where); получите вашу JSON строку: {"0":{"available:=":"0","AND:toOrder:=":"1"},"OR:available:=":"1"}
которые отдельно достаются. считай 700*22 это 14к+ запросов к базе. Проблема-то не в MODX, а в вас, точнее в вашем подходе. Нафига выполнять 22 запрос к ТВхам на каждый документ? А еще интересно нафига вообще сразу 700 документов получать, а еще и к ним по 22 запроса на каждый делать? Пересматривайте свой подход к работе. Так можно любое нормальное приложение испортить.