К содержанию

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

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

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

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

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

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

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

      По уму, его вообще убрать надо, чтобы не путал.
        Юрий Эффа
        Юрий Эффа Проверенный
        15 сентября 2013, 17:17
        указал выводить все страницы
        А как ещё указать 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
          [[pdoResources?
          	&parents=`0`
          	&resources=`-12`
          	&where=`{"context_key":"shop"}`
          	&depth=`0`
          	&tpl=`jd.oforlist-item.tpl`
          	&limit=`0`
          ]]

          Подумаю, как улучшить работу &context.
            Юрий Эффа
            Юрий Эффа Проверенный
            15 сентября 2013, 17:22
            Василий, благодарю. То, что надо.
        Юрий Эффа
        Юрий Эффа Проверенный
        15 сентября 2013, 17:20
        …
      Юрий Эффа
      Юрий Эффа Проверенный
      15 сентября 2013, 17:33
      ещё наткнулся — при любом значении 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
        &depth — глубина выборки от родителя.

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