[РЕШЕНО] JSON для pdoMenu
Здравствуйте. У меня с системе несколько контекстов (основной и региональные сайты на поддоменах).
Шаблоны одинаковые.
Пытаюсь сделать вывод главного меню с ограничением по контексту:
Таким образом успешно выводятся все ресурсы с шаблоном id=16 из контекста web (текущего). Но мне нужно выводить ресурсы с шаблоном id=16 и id=13.
Делаю так:
Выводятся все ресурсы с шаблонами id=16 и 13, НО из ВСЕХ контекстов.
При записи вида:
Результат тот же
Спасибо за ответы!
Шаблоны одинаковые.
Пытаюсь сделать вывод главного меню с ограничением по контексту:
[[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"}`
Результат тот же
Спасибо за ответы!
Комментарии: 7
[[++context_key]]
успешно выводятся все ресурсы с шаблоном id=16 из контекста web (текущего)[[*context_key]] работает, я проверил перед тем, как забивать в настройки
Разобрался. Помог запрос, составленный вот так:
&where=`(template LIKE '%16%' OR template LIKE '%13%')`
Почему LIKE то? По шаблону то нужно точное совпадение.
Вот так должно работать без проблем:
Вот так должно работать без проблем:
&where=`{"template":16,"OR:template:=":13}`
Не работает, выводит из всех контекстов
Это потому, что там еще дофига условий присоединяется. Нужно включать showLog и смотреть в запрос.
Вот так работает — условия во вложенном массиве, поэтому берутся в скобки:
Выходит такое условие выборки:
Не стесняйтесь использовать &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.
Я использовал. У меня хромает синтаксис не много )) Спасибо за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.