pdoResources с рекурсивным вызовом не работает

[[!pdoResources? &tpl=`service` &limit=`0` &depth=`0` &includeContent=`0` &sortby=`menuindex` &sortdir=`ASC`]]
<h1>[[+pagetitle]]<h1>
Внутри чанка service вызывается еще раз:
[[pdoResources? &parents=`[[+id]]` &tpl=`service.in` &limit=`0` &depth=`0` &includeContent=`0` &sortby=`menuindex` &sortdir=`ASC`]]
<h2>[[+pagetitle]]<h2>
При этом первый вызов срабатывает лишь раз все остальные ресурсы выводятся как результаты рекурсивного вызова

Например для:
Папка 1
— ресурс 1
— ресурс 2
Папка 2
— ресурс 3

Результат будет следующим:
<h1>Папка 1</h1>
<h2>ресурс 1<h2>
<h2>ресурс 2<h2>
<h2>ресурс 3<h2>
<h2>Папка 2<h2>
PS: причем просто заменив pdoResources на getResources — все работает.
Автору готов предоставить доступ на сайт.
Макеев Александр
23 августа 2013, 16:40
modx.pro
2 268
0

Комментарии: 6

Василий Наумкин
23 августа 2013, 21:56
0
Ты не понимаешь, зачем нужен pdoResources, если пытаешься вызывать его рекурсивно. Суть его работы — выборка всех нужных данных за один запрос в БД.

P.S. И непонятно, зачем ты вызываешь его кэшированным в чанке. Это в любом случае, как то неправильно.
    Макеев Александр
    24 августа 2013, 00:18
    0
    Не совсем понял ответ.
    Суть его работы — выборка всех нужных данных за один запрос в БД.
    Все равно не понятно почему он не верно срабатывает.

    И непонятно, зачем ты вызываешь его кэшированным в чанке. Это в любом случае, как то неправильно.
    Я его и выше использую кешированным (На время теста просто не кешировал) не понимаю что тут может быть не правильного, а рекурсивный вызов все же иногда требуется, поэтому и решил отписать, мало ли кто еще решит так использовать.

    В любом случае спасибо вам за огромный труд проделанный для сообщества!
      Василий Наумкин
      24 августа 2013, 05:46
      0
      Ты вызываешь его с параметром &depth=`0` — это значит, что первый же вызов сниппета выберет всех потомков.

      Зачем еще у каждого потомка точно также вызывать сниппет? Включи showLog=`1` в чанке, увидишь сколько будет лишних запросов.

      Ну и у меня на тестовом сайте все работает, как ты указал, что с кэшем, что без.
      Первый вызов:
      [[pdoResources?
      	&parents=`0`
      	&limit=`0`
      	&depth=`1`
      	&tpl=`test`
      ]]

      Чанк test
      [[+pagetitle]]
      <ul>
      	[[pdoResources?
      		&parents=`[[+id]]`
      		&tpl=`test`
      		&limit=`0`
      		&depth=`0`
      	]]
      </ul>

      Результат


      Видишь, что ресурсы выбраны 2 раза? Это из-за &depth=`0` при первом вызове. Лучше указать = 1 или вообще не страдать ерундой, а выбирать за 1 раз, без рекурсии в чанках.
Макеев Александр
26 августа 2013, 17:20
0
Проблема после обновления не актуальна, спасибо Василию.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6