[РЕШЕНО] JSON для pdoMenu

Здравствуйте. У меня с системе несколько контекстов (основной и региональные сайты на поддоменах).
Шаблоны одинаковые.
Пытаюсь сделать вывод главного меню с ограничением по контексту:

[[pdoMenu? 
	&context=`[[*context_key]]`
	&select=`id,pagetitle,template`
	&parents=`0`
	&level=`1`
	&where=`{"template:LIKE":"%16%"}`
	&tpl=`@INLINE <li id="menu[[+id]]"><a href="[[+link]]">[[+pagetitle]][[+template]]</a><span></span></li>`
    	&tplOuter=`@INLINE [[+wrapper]]`
]]

Таким образом успешно выводятся все ресурсы с шаблоном id=16 из контекста web (текущего). Но мне нужно выводить ресурсы с шаблоном id=16 и id=13.

Делаю так:
&where=`{"template:LIKE":"%16%","OR:template:LIKE":"%13%"}`

Выводятся все ресурсы с шаблонами id=16 и 13, НО из ВСЕХ контекстов.

При записи вида:
&where=`{"template":"16","OR:template":"13"}`

Результат тот же

Спасибо за ответы!
MrKarandash
28 февраля 2015, 01:59
modx.pro
3
3 765
0

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

Григорий Коленько
28 февраля 2015, 05:49
0
[[++context_key]]
    MrKarandash
    28 февраля 2015, 12:52
    0
    успешно выводятся все ресурсы с шаблоном id=16 из контекста web (текущего)
    [[*context_key]] работает, я проверил перед тем, как забивать в настройки
    MrKarandash
    28 февраля 2015, 14:33
    0
    Разобрался. Помог запрос, составленный вот так:

    &where=`(template LIKE '%16%' OR template LIKE '%13%')`
      Василий Наумкин
      28 февраля 2015, 14:48
      0
      Почему LIKE то? По шаблону то нужно точное совпадение.

      Вот так должно работать без проблем:
      &where=`{"template":16,"OR:template:=":13}`
        MrKarandash
        28 февраля 2015, 15:07
        0
        Не работает, выводит из всех контекстов
          Василий Наумкин
          28 февраля 2015, 15:15
          1
          0
          Это потому, что там еще дофига условий присоединяется. Нужно включать showLog и смотреть в запрос.

          Вот так работает — условия во вложенном массиве, поэтому берутся в скобки:
          [[!pdoMenu?
          	&parents=`0`
          	&level=`1`
          	&context=`en`
          	&where=`[{"template":1,"OR:template:=":2}]`
          	&showLog=`1`
          ]]

          Выходит такое условие выборки:
          WHERE  (  ( `modResource`.`template` = 1 OR `modResource`.`template` = 2 )  AND  ( `modResource`.`parent` IN (0) OR `modResource`.`id` IN (0) )  AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'web' ) 

          Не стесняйтесь использовать &showLog.
            MrKarandash
            28 февраля 2015, 15:21
            0
            Я использовал. У меня хромает синтаксис не много )) Спасибо за помощь!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7