pdoResources: слетает контекст

При указании «отрицательного» resources в вызове pdoResources выводятся материалы всех контекстов

При выводе ресурсов через pdoResources указываю context=`shop` (в моём случае) и resources=`-12` (следуя описанию из подсказки «Если id ресурса начинается с дефиса, этот ресурс исключается из выборки») — ресурс из выборки исключается, НО пропадает привязка к конкретному контексту и сниппет вываливает все ресурсы, которые позволяют вывести остальные параметры. Убираем параметр, или делаем его «положительным» — всё работает как надо.
может у меня дефис неправильный…
Юрий Эффа
15 сентября 2013, 12:58
modx.pro
3 529
0

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

Василий Наумкин
15 сентября 2013, 16:59
0
Давай полный вызов и лог запроса, неохота гадать.
    Юрий Эффа
    15 сентября 2013, 17:02
    0
    [[pdoResources?
    &parents=`0`
    &context=`shop`
    &depth=`0`
    &tpl=`jd.oforlist-item.tpl`
    &limit=`0`
    &resources=`-12`]]
    лог запроса
    про это немного не понял… — куда смотреть?
      Василий Наумкин
      15 сентября 2013, 17:10
      0
      &showLog=`1`

      Ну и эта, ты указал выводить все страницы (&parents=`0`), кроме товара с id=12 — так и выводится.

      Параметр &context работает только если и &parents и &resources равны 0. Иначе он не нужен, если ты указал или ресусры или родителей.

      По уму, его вообще убрать надо, чтобы не путал.
        Юрий Эффа
        15 сентября 2013, 17:17
        0
        указал выводить все страницы
        А как ещё указать parents, если ресурсы в корне другого контекста?
        Удалём resources, и всё работает как надо — выводятся материалы только заданного контекста:
        [[pdoResources?
        &parents=`0`
        &context=`shop`
        &depth=`0`
        &tpl=`jd.oforlist-item.tpl`
        &limit=`0`]]
        Лог:
        0.0000250: pdoTools loaded
        0.0001049: Conditions prepared
        0.0000331: Query parameters ready
        0.0001040: xPDO query object created
        0.0000339: Grouped by modResource.id
        0.0007892: Added selection of modResource: SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`
        0.0006580: Added where condition: published=1, deleted=0, modResource.id:NOT IN(12)
        0.0000329: Sorted by publishedon, DESC
        0.0000131: Limited to 0, offset 0
        0.0004559: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `jd_site_content` AS `modResource` WHERE  ( `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`id` NOT IN (12) )  GROUP BY modResource.id ORDER BY publishedon DESC "
        0.0009491: SQL executed
        0.0001578: Total rows: 16
        0.0002840: Rows fetched
        0.0158241: Returning processed chunks
        0.0194650: Total time
        8 388 608: Memory usage
          Василий Наумкин
          15 сентября 2013, 17:20
          0
          [[pdoResources?
          	&parents=`0`
          	&resources=`-12`
          	&where=`{"context_key":"shop"}`
          	&depth=`0`
          	&tpl=`jd.oforlist-item.tpl`
          	&limit=`0`
          ]]

          Подумаю, как улучшить работу &context.
        Юрий Эффа
        15 сентября 2013, 17:20
        0

      Юрий Эффа
      15 сентября 2013, 17:33
      0
      ещё наткнулся — при любом значении depth вываливает все ресурсы контекста
      вызов тот же:
      [[pdoResources?
      	&parents=`0`
      	&resources=`-12`
      	&where=`{"context_key":"shop"}`
      	&depth=`0`
      	&tpl=`jd.oforlist-item.tpl`
      	&limit=`0`
      ]]
      если добавляем в where условие для parent'а, то всё работает:
      &where=`{"context_key":"shop","parent:=":0}`
      наличие\отсутствие depth при этом ни на что не влияет, само собой
        Василий Наумкин
        15 сентября 2013, 17:36
        0
        &depth — глубина выборки от родителя.

        Ты выбираешь ресурсы в корне, то есть родителей у них нет. Значит, нужно указать:
        &where=`{"context_key":"shop", "parent":0}`
        Включай &showLog, смотри запросы — это ж SQL, нетрудно разобраться, что происходит.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10