minishop2 сортировка по полю color
Приветствую,
подскажите на выводе
в саму таблицу сохраняется в виде json как я вижу, в фильтр тоже могу вбить в формате json цвет
вопрос как правильно отсортировать по цветам фильтр
{«Data.color:LIKE»:"%цвет%"} не работает..., пробовал название цвета переводить в json, тоже не работает
где то еще вычитал что можно напрямую вводить типа
не могу найти чтото документации по сортировке
видел гдето что можно поле color плагином перевести в текстовый формат,
если это сделать, сортировка заработает? например если через запятую вводить а потом лайками искать?
подскажите на выводе
[[!pdoPage:empty=`Ничего не найдено...`? &element=`msProducts`&where=``]]
[[!+page.nav]]
Как правильно прописать в условие where, один или два цвета,в саму таблицу сохраняется в виде json как я вижу, в фильтр тоже могу вбить в формате json цвет
вопрос как правильно отсортировать по цветам фильтр
{«Data.color:LIKE»:"%цвет%"} не работает..., пробовал название цвета переводить в json, тоже не работает
где то еще вычитал что можно напрямую вводить типа
(Data.color LIKE '%цвет%') ANS some = else
но тож не сработало, или такой формат для where для pdotools?не могу найти чтото документации по сортировке
видел гдето что можно поле color плагином перевести в текстовый формат,
если это сделать, сортировка заработает? например если через запятую вводить а потом лайками искать?
Комментарии: 11
Если у товаров несколько цветов, то получится ерунда. А вообще, все JSON поля копируются в msProductOption.
Так что нужно просто присоединить этот класс и сортировать по нему:
Так что нужно просто присоединить этот класс и сортировать по нему:
[[!msProducts?
&parents=`0`
&leftJoin=`{
"msProductOption":{
"class":"msProductOption",
"on":"msProductOption.key = 'color' AND msProductOption.product_id = msProduct.id"
}
}`
&select=`{
"msProduct":"*",
"msProductOption":"value as color"
}`
&sortby=`msProductOption.value`
&sortdir=`ASC`
&tpl=`@INLINE <p>[[+pagetitle]] [[+color]]</p>`
&showLog=`1`
]]
Источник вдохновения — bezumkin.ru/training/course2/3006/
Приветствую,
спасибо — выдает результат, но я не правильно видимо сформулировал вопрос
я имел ввиду есть ли возможность сделать выборку по определенному цвету или цветам? с помощью where в приведенном коде не срабатывает, либо я не правильно пробую:
так?
тоесть по нескольким цветам нельзя будет выбирать?
спасибо — выдает результат, но я не правильно видимо сформулировал вопрос
я имел ввиду есть ли возможность сделать выборку по определенному цвету или цветам? с помощью where в приведенном коде не срабатывает, либо я не правильно пробую:
так?
&where=`{"Data.color":"название цвета"}`
Если у товаров несколько цветов, то получится ерунда.
тоесть по нескольким цветам нельзя будет выбирать?
что то подобное возможно реализовать из коробки?
&where=`{"Data.color:IN":["цвет 1","цвет 2"]}`
или нужно дописывать?
Data — это автоматически присоединённая таблица msProductData, в которой цвета записаны JSON строкой. Из JSON ты ничего не выберешь, потому что для MySQL это просто строка.
Нужно выбирать из таблицы msProductData, и я уже показал тебе, как её присоединять. Даже ссылку дал на объяснение принципов работы.
Дальше давай сам.
Нужно выбирать из таблицы msProductData, и я уже показал тебе, как её присоединять. Даже ссылку дал на объяснение принципов работы.
Дальше давай сам.
то есть из сниппета msProducts можно это сделать? без правок исходного кода?
я пытаюсь понять просто, можно из него сделать это или проще свой сниппет написать, потому что явные способы не срабатывают…
мало ли кто-то уже делал, зачем мне велосипед изобретать?)
я пытаюсь понять просто, можно из него сделать это или проще свой сниппет написать, потому что явные способы не срабатывают…
мало ли кто-то уже делал, зачем мне велосипед изобретать?)
Естественно, можно. Я уже всё рассказал, осталось только сложить и подумать.
Или думать не хочется, хочется готовое решение?
Или думать не хочется, хочется готовое решение?
окей)
если честно не хочется разбираться вот в этих сортировках с помощью json)
а прямой запрос можно как то прописать?
если честно не хочется разбираться вот в этих сортировках с помощью json)
а прямой запрос можно как то прописать?
Ну не хочется, так не хочется.
Удачи!
Удачи!
запрос
Василий, есть документация по этим json запросам где нибудь?
&where=`{"msProductOption.value":"цвет"}`
работает, кому пригодится.Василий, есть документация по этим json запросам где нибудь?
А вот эта ссылка тебя чем не устраивает? bezumkin.ru/training/course2/3006/
Есть еще вот такая
rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
Есть еще вот такая
rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
Всех с прошедшими праздниками!
Привет, Василий.
подскажи, хочу выдавать в результат поиска только товары, например, по связям имеющих главную роль («master»). Но при этом, чтобы был поиск по «slave».
можно так сделать?
вот что пробую:
судя по всему у меня и гдето здесь есть ошибка, пытаюсь вывести хотя бы id главного товара — не выходит.
Привет, Василий.
подскажи, хочу выдавать в результат поиска только товары, например, по связям имеющих главную роль («master»). Но при этом, чтобы был поиск по «slave».
можно так сделать?
вот что пробую:
[[!msProducts:empty=`Ничего не найдено...`?
&parents=`[[*id]]`
&where=`[[!filterGenerate]]`
&leftJoin=`{
"msProductOption":{
"class":"msProductOption",
"on":"msProductOption.key = 'color' AND msProductOption.product_id = msProduct.id"
}
}
`
&rightJoin=`{
"msProductLink":{
"class":"msProductLink",
"on":"msProductLink.slave = msProduct.id"
}
}`
&select=`{
"msProduct":"*",
"msProductLink":"master as id",
"msProductOption":"value as color",
}`
&link=`1`
&groupby=`msProductLink.master`
&sortby=`msProductOption.value`
&sortdir=`ASC`
&tpl=`tpl.msProducts.row`
&showLog=`1`
]]
немогу допереть, можно ли подставить, при групировке, в вывод товара, значения из продукта который является основным, тоесть master?судя по всему у меня и гдето здесь есть ошибка, пытаюсь вывести хотя бы id главного товара — не выходит.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.