pdoResources вывод по tv

Доброе утро.
Помогите с логикой, казалось бы гениальное решение обернулось крахом.
Суть в чем: надо на действующем сайта с 300 новостями добавить закрепление новостей поверх остальных, причем при закреплении эта самая новость выходит из общего списка ниже, чтобы не дублироваться, искал решение через tv chekbox у которого Да==1 закрепляем, а Нет==0 по умолчанию, но оказалось что modx revo не хранит значение по умолчанию.

в общем написал такой вывод:
вывод закрепленной новости
[[!pdoResources?
        &parents=`14`
        &limit=`1`
        &depth=`0`
        &tvFilters=`zakr==1`
        &tpl=`news_tpl_left`
        &includeTVs=`img_news`
    ]]
ниже следующее:
[[pdoResources:toPlaceholder=`no_zakr`?
        &parents=`14`
        &limit=`0`
        &returnIds=`1`
        &includeTVs=`zakr`
        &where=`{ "zakr":1 }`
    ]]
    [[pdoResources?
        &parents=`14`
        &limit=`2`
        &tpl=`news_tpl_left`
        &includeTVs=`img_news,zakr`
        &where=`{"id:NOT IN":[ [[+no_zakr]] ]}`
    ]]
по советам получилось так: получаем список закрепленных новостей, и выводим те, которые к ним не относятся.
Но стоило только открепить новость, как вывод незакрепленных закономерно перестал работать.
подскажите, что дописать в &where для вывода в случае отсутствия первого условия

вопрос закрываю, спасибо Василий.
буду дальше учиться всему и вся, когда нибудь сделаю нормально, но видимо не сегодня
кому интересно временной костыль:
ставить галочку не выводить ресурс в меню, в выводе соответственно &showHidden=`0`
Здоров Александр
03 февраля 2016, 06:45
modx.pro
8 997
0

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

Василий Наумкин
03 февраля 2016, 09:49
0
Это что за конструкция такая?
[[pdoResources:toPlaceholder=`no_zakr`?
Впервые вижу.

Почему не
[[pdoResources?
	&toPlaceholder=`no_zakr`
    Здоров Александр
    03 февраля 2016, 09:54
    0
    видел такое предложение от ильи уткина в одном из вопросов здесь
    переделал вывод, результат аналогичен полностью
      Василий Наумкин
      03 февраля 2016, 10:03
      0
      И ты сам не можешь отдельно вывести плейсхолдер, отдельно вывести без плейсхолдера, вызвать некэширвованным и понять, на каком этапе проблема?

      Нужно обязательно сразу написать ВЕСЬ код, без проверки, а когда он не заработает — строчить вопрос в сообществе?

      «Отладка» — слышал такое слово?
        Здоров Александр
        03 февраля 2016, 10:10
        0
        Василий, я понимаю ваше отношение к такого рода вопросам.
        я в безвыходном положении, так как моих знаний катастрофически не хватает для этой проблемы. изначально когда есть вывод с закрепленкой все окей, а понимаю (ну или мне так кажется) беда, но вот исправить уже не получается, рассчитывал на помощь гуру, которые уже наверняка что-то подобное делали
          Василий Наумкин
          03 февраля 2016, 10:14
          0
          Честное слово, я каждый день удивляюсь.

          Что показывает
          [[!pdoResources?
                  &parents=`14`
                  &limit=`0`
                  &returnIds=`1`
                  &includeTVs=`zakr`
                  &where=`{ "zakr":1 }`
          ]]

          Что показывает
          [[!pdoResources?
                  &parents=`14`
                  &limit=`0`
                  &returnIds=`1`
                  &includeTVs=`zakr`
                  &where=`{ "zakr":1 }`
          	&toPlaceholder=`no_zakr`
          ]]
          [[!no_zakr]]

          Что, в конце концов, показывает
          [[!pdoResources?
                  &parents=`14`
                  &limit=`2`
                  &tpl=`news_tpl_left`
                  &includeTVs=`img_news,zakr`
          	&where=`{"id:NOT IN":[ [[!+no_zakr]] ]}`
          	&showLog=`1`
          ]]
          Может, там ошибки в логе?

          Что мешает выполнить все эти 3 действия по очереди и понять, на каком этапе не работает?
            Здоров Александр
            03 февраля 2016, 10:42
            0
            получил такой результат при откреплении, и соответственно отсутствии плейсхолдера
            0.0003171: Could not process query, error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND `modResource`.`parent` IN (14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29' at line 1
              Роман Садоян
              03 февраля 2016, 10:59
              +1
              https://bezumkin.ru/utils/json

              А что мешает сделать 2 вызова PdoResources: 1-ый выводит закрепленные записи, 2ой не закрепленные записи?
              Не проставленные значения можно проставить простым перебором через getCollection.
    Владислав
    03 февраля 2016, 13:32
    0
    Мне кажется твоя проблема решится одним вызовом pdoResources
    [[!pdoResources?
                    &parents=`14`
                    &limit=`0`
                    &depth=`0`
                    &tpl=`news_tpl_left`
                    &includeTVs=`zakr, img_news`
                    &sortby=`{
                	    "zakr":"asc",
                		"menuindex":"desc"
                	}`
                ]]
    Таким образом в первую очередь сортировка будет сначала по тв полю zakr, получится эффект закрепленного ресурса.
    Просто варьируй asc и desc.
      Здоров Александр
      03 февраля 2016, 14:05
      0
      после смены «zakr»:«desc» нужная новость закрепилась,
      но далее когда должно сортироваться по menuindex сортировка начинается от новости 23 декабря (после неё еще около 10 новостей)
      «menuindex»:«asc» — после закрепленной идут новости от первой самой
      замена на publishedon ни дает никакого результата
        Владислав
        03 февраля 2016, 14:09
        0
        &sortby=`{
                    	    "zakr":"asc",
                    		"publishedon":"desc"
                    	}`
        Так не работает?
        Попробуйте createdon…
          Здоров Александр
          03 февраля 2016, 14:18
          0
          пробовал, ресурсы в разнобой создавались, порядок именно по menuindex и по дате publishedon
          дата публикации, если брать asc безупречна, по если desc то как писал выше
          для menuindex сравнил показатели. последний ресурс имеет номер 150, а выводится 142… в итоге вторым
            Владислав
            03 февраля 2016, 14:23
            0
            то есть у вас сортировка должна идти по двум полям? publishedon и menuindex?
            И так не срабатывает?
            &sortby=`{
            	"zakr":"asc",
            	"publishedon":"desc",
            	"menuindex":"asc"
            }`
            Варьируйте порядок в sortby по приоритету
              Здоров Александр
              03 февраля 2016, 14:32
              0
              При такой сортировке
              "zakr":"asc"
              закрепляемый ресурс не отображается в 3 ресурсов
              меняю на
              "zakr":"desc"
              закрепляемый первый, а за ним 2 не по порядку, и не по дате совершенно (провел порядковый номер и дату публикации)
                Здоров Александр
                03 февраля 2016, 14:35
                0
                Варьируйте порядок в sortby по приоритету
                делал и делаю
                ведать не моё это сегодня, упрямо одно и тоже, либо с самого начала, либо эти 2 клятых ресурса, причем если бы они подряд шли, так нет, между ними еще 1-2 ресурса есть
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        14