Не работает WHERE в pdoReources
Привет! Помогите пожалуйста, уже второй день никак не могу решить одну задачу
Есть много ресурсов, через ТВ поля (или migx) им нужно задать поле для последующей фильтрации
На странице куда нужно вывести отфильтрованные результаты делаю так: (пока в шаблоне)
TV countries (migx)
Пробовал создавать и обычный TV со списком и мультивыбором, но не работает никак.
Ресурсы которые надо выводить находятся в коллекции, я хочу насоздавать еще ресурсов с соответствующими параметрам фильтрации названиями, вывести их в меню и в content запихать вызовы pdoresources с разными &where=. Очень желательно, чтобы можно было в countries записывать несколько стран и эти ресурсы выводились на нужных страницах. Надеюсь, понятно объяснил. Помогите пожалуйста!
PS: кстати где показываются данные по showlog? а то я его включил а где смотреть ошибки не знаю
Есть много ресурсов, через ТВ поля (или migx) им нужно задать поле для последующей фильтрации
На странице куда нужно вывести отфильтрованные результаты делаю так: (пока в шаблоне)
[[pdoResources?
&parents=`6`
&depth=`0`
&tpl=`tourCategoryTpl`
&includeTVs=`price,images,countries`
&processTVs=`price,images,countries`
&sortdir=`ASC`
&where=`{"country" : "Kazakhstan"}`
&showlog=`1`
]]
tourCategoryTpl:<li class="col-lg-6 col-sm-6">
<div class="shop-item">
<div class="thumbnail">
<!-- product image(s) -->
<a class="shop-item-image" href="[[+uri]]">
<img class="img-responsive" src="
[[!getImageList?
&tvname=`images`
&tpl=`@CODE:[[+image]]`
&limit=`1`
&docid=`[[+id]]`
]]
" alt="[[+title]]" />
</a>
<!-- /product image(s) -->
</div>
<div class="shop-item-summary text-center">
<h2>[[+pagetitle:ellipsis=`30`]]</h2>
<!-- price -->
<div class="shop-item-price">
[[+price]]
</div>
<!-- /price -->
</div>
</div>
</li>
TV countries (migx)
[
{"caption":"Страны", "fields": [
{"field":"country","caption":"Страна"}
]}
]
Пробовал создавать и обычный TV со списком и мультивыбором, но не работает никак.
Ресурсы которые надо выводить находятся в коллекции, я хочу насоздавать еще ресурсов с соответствующими параметрам фильтрации названиями, вывести их в меню и в content запихать вызовы pdoresources с разными &where=. Очень желательно, чтобы можно было в countries записывать несколько стран и эти ресурсы выводились на нужных страницах. Надеюсь, понятно объяснил. Помогите пожалуйста!
PS: кстати где показываются данные по showlog? а то я его включил а где смотреть ошибки не знаю
Комментарии: 10
Migx и список это json строки, &where=`{«country»: «Kazakhstan»}` работать не будет, так как в тв поле хранится строка, а не опция: значение. Выборку нужно делать в getImageList или писать свой сниппет, где у ресурсов запрашивается мигкс поле, происходит декодинг из json в массив, выборка по параметру и потом вывод того, что подошло.Хотя я не уверена, мб какое то решение и есть
Да можно и не через migx а через обычный TV, с Listbox Multi-Select. В таком случае можно через pdoResources? Как это сделать на getImageList я что-то не пойму. Он же выводит какой-то один ресурс, а не много. Или его вызывать из pdoResources?
Вам осталось подправить под нужды. Тв поле
<?php
$res = $modx->getObject('modResource', 8164); //получаем ресурс
$migx = $res->getTVValue('TV.option'); //получаем мигкс тв поле
$items = $modx->fromJSON($migx); //мигкс json
$output = array();
foreach($items as $item) { //проходим циклом по мигксу
$output[] = $item['option'].' — '.$item['znach']; //записываем в массив значения мигкс полей, допишите тут if и возвращайте полученный ресурс если он прошел
}
return implode(PHP_EOL, $output);
Спасибо большое, но моих знаний пока не хватает чтобы это применить (
Я так понял это сниппет, но вот что с ним дальше делать и что подправлять — для меня загадка
Я так понял это сниппет, но вот что с ним дальше делать и что подправлять — для меня загадка
В целом задача такая: нужно на определенном ресурсе вывести определенные ресурсы, попадающие под условие. Каким образом это делать — не принципиально. Это просто я так подумал, что можно это сделать через TV. Может быть есть и более простые и правильные способы, подскажите пожалуйста. Через теги я не понял как сделать. И вроде даже где-то читал что не получится.
Что за ресурсы? Товары?
В pdoResources выборку migx вряд ли получится сделать, можно писать where в getimagelis, тогда работать будет
В pdoResources выборку migx вряд ли получится сделать, можно писать where в getimagelis, тогда работать будет
Туры. Ну, можно сказать что товары
getimagelis вставляете в чанк pdoResources, пишите в getimagelist where которое нужно, docid указываете [[+id]].
Спасибо, попробую этот вариант. Пока решил все проще, обычный TV с листбоксом и вот такая конструкция:
[[pdoResources?
&parents=`6`
&depth=`0`
&tpl=`tourCategoryTpl`
&includeTVs=`price,images,countries`
&processTVs=`price,images,countries`
&sortdir=`ASC`
&where=`{«countries»: «kz»}`
&showlog=`1`
]]
[[pdoResources?
&parents=`6`
&depth=`0`
&tpl=`tourCategoryTpl`
&includeTVs=`price,images,countries`
&processTVs=`price,images,countries`
&sortdir=`ASC`
&where=`{«countries»: «kz»}`
&showlog=`1`
]]
Чота не работает блин как хотелось бы. В базе TV countries значения хранятся разделенными ||
Как оттуда вычленить нужное? EXISTS не работает либо я не правильно пишу ((
Такой запрос работает, но он тупо повторяет то, что записано в базе
[[!pdoResources?
&parents=`6`
&depth=`0`
&tpl=`tourCategoryTpl`
&includeTVs=`price,images,countries`
&processTVs=`price,images,countries`
&sortdir=`ASC`
&prepareTVs=`1`
&where=`{«countries:IN»:[«kz||kg»]}`
&showlog=`1`
]]
Как оттуда вычленить нужное? EXISTS не работает либо я не правильно пишу ((
Такой запрос работает, но он тупо повторяет то, что записано в базе
[[!pdoResources?
&parents=`6`
&depth=`0`
&tpl=`tourCategoryTpl`
&includeTVs=`price,images,countries`
&processTVs=`price,images,countries`
&sortdir=`ASC`
&prepareTVs=`1`
&where=`{«countries:IN»:[«kz||kg»]}`
&showlog=`1`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.