Вывод товаров с аналогичным названием
Добрый день!
Возникла необходимость вывода товаров с похожим названием.
К примеру у меня есть товар, который называется Argus, необходимо на странице этого товара вывести другие товары (если они есть) с аналогичным названием… Argus 1, Argus 2, Argus 3 и т.д.
Заранее спасибо!
Возникла необходимость вывода товаров с похожим названием.
К примеру у меня есть товар, который называется Argus, необходимо на странице этого товара вывести другие товары (если они есть) с аналогичным названием… Argus 1, Argus 2, Argus 3 и т.д.
Заранее спасибо!
Комментарии: 34
У меня подобная задача решается таким способом:
[[!pdoPage?
&element=`msProducts`
&limit=`15`
&parents=`714`
&sortby=`{"createdon":"DESC"}`
&where=`{"msProduct.pagetitle:REGEXP":"[[pdoField?
&id=`[[*id]]`
&field=`pagetitle`
]]"}`
&sortdir=`DESC`
]]
Спасибо за ответ!
Но у меня не стоит minishop ( простой каталог без корзины и прочего)
Как быть в таком случае?
Но у меня не стоит minishop ( простой каталог без корзины и прочего)
Как быть в таком случае?
Также, только упростить немного ))):
[[!pdoPage?
.........
&where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
]]
Чет не понимаю ))
Я пишу так
Я пишу так
[[!pdoPage?
&element=`msProducts`
&limit=`15`
&parents=`1` // это корневая папка каталога
&sortby=`{"createdon":"DESC"}`
&where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
&sortdir=`DESC`
]]
Вместо msproducts что необходимо писать?
У Вас стоит сниппет msProducts? Нет. Значит и не надо его писать ).
Если у Вас установлен pdoTools, то в &element вообще ничего писать не нужно — по умолчанию используется сниппет pdoResources.
Если pdoTools не установлен, а есть getPage с getResources, то так:
Если у Вас установлен pdoTools, то в &element вообще ничего писать не нужно — по умолчанию используется сниппет pdoResources.
Если pdoTools не установлен, а есть getPage с getResources, то так:
[[!getPage?
&element=`getResources`
&limit=`15`
&parents=`1`
&sortby=`{"createdon":"DESC"}`
&where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
&sortdir=`DESC`
]]
Ничего почему то не выводится, ни через pdopage ни через get (
Пробовал указывать и корень каталога и конкретную категорию.
Пробовал указывать и корень каталога и конкретную категорию.
А если убрать эту строчку &where=`{«pagetitle:REGEXP»:"[[*pagetitle]]"}` вообще что-нибудь выводит?)
Ничего не выводит (
В контейнере с ID=1 действительно есть ресурсы?
Они опубликованы?
Они опубликованы?
Согласен с mekirile. Проверьте без условия, только sortdir уберите (он не нужен, поскольку уже прописан в sortby):
[[getResources?
&limit=`15`
&parents=`1`
&sortby=`{"createdon":"DESC"}`
&tpl=`@INLINE [[+pagetitle]]`
]]
Если так что-то выведет, то поставьте условие:[[getResources?
&limit=`15`
&parents=`1`
&sortby=`{"createdon":"DESC"}`
&where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
&tpl=`@INLINE [[+pagetitle]]`
]]
Если результатов не будет замените параметр where на такой:&where=`{"pagetitle:LIKE":"%[[*pagetitle]]%"}`
и естественно, пропишите свой &tpl.
Вставил так
[[!pdoResources?
&parents=`1`
&showHidden=`1`
&tpl=`catalog_item`
&limit=`50`
&depth=`2`
&includeContent=`0`
&prepareTVs=`1`
&includeTVs=`pazmeri_uchastka`
&processTVs=`1`
&sortby=`{"createdon":"DESC"}`
&where=`{"pagetitle:LIKE":"%[[*pagetitle]]%"}`
&sortdir=`DESC`
]]
Товар выводится, но в похожих товарах выводится только тот же товар, т.е захожу к примеру в товар Argus1 и вижу товар Argus1, хотя еще созданы товары Argus2 и Argus3
Что у Вас в чанке catalog_item?
верстка товара с TV параметрами для вывода в каталоге ( никаких сниппетов там нет)
собственно catalog_item выводит товар в виде
собственно catalog_item выводит товар в виде
захожу к примеру в товар Argus1 и вижу товар Argus1, хотя еще созданы товары Argus2 и Argus3
если через LIKE, то Argus2 и Argus3 никак не подходят под этот поиск, если искать Argus1
А как быть тогда? )
как вариант можно переименовать в Argus 1, Argus 2 и т.п. (т.е. добавив пробел), тогда можно попробовать применить поиск MATCH… AGAINST
У меня товары с пробелом идут )
Как тогда поиск MATCH… AGAINST применить?
Как тогда поиск MATCH… AGAINST применить?
Написать сниппет, который будет брать часть названия до пробела, например)
Вот кусок sql-запроса, который я использовал у себя в самописной фигне
WHERE id != :id AND MATCH(`title`) AGAINST("+'.str_replace(' ','+',$title).'" IN BOOLEAN MODE)
который тоже находил схожие записи по названию, тебе осталось только интегрировать это в модыкс
Кстати да, об исходном условии-то мы и забыли )))
А у Вас все объекты называются по такому шаблону? То есть *****1, ***2, ****3 и т. д.?
А у Вас все объекты называются по такому шаблону? То есть *****1, ***2, ****3 и т. д.?
А у Вас все объекты называются по такому шаблону? То есть *****1, ***2, ****3 и т. д.?Да, все товары с пробелами идут, иногда товар называется Argus 2A
Тогда можно сделать такой сниппет:
<?php
$arr = explode(' ', $input);
$last = array_pop($arr);
unset($last);
return implode(' ', $arr);
Назвать его, к примеру, similar и в условии прописать:&where=`{"pagetitle:LIKE":"%[[*pagetitle:similar]]%"}
Но тогда, естественно, не использовать пробелы в цифровых обозначениях. То есть «2А», а не «2 А», поскольку тут название разбивается именно по пробелам.
del
При таком раскладе выводит вообще весь каталог (
Что выводит такая конструкция, если её прописать на странице «Аргус 1»?
[[*pagetitle:similar]]
Pavel, прошу прощения &where=`{«pagetitle:LIKE»:"%[[*pagetitle:similar]]%"} работает, Вы забыли ковычку закрыть в конце и я не углядел сразу ))
Теперь вопрос следующий… как убрать вывод того же товара на странице с товаром?
На странице Аргус 1 убрать из «похожих товаров » Аргус 1, оставить только Аргус 2 и т.д.
На странице Аргус 1 убрать из «похожих товаров » Аргус 1, оставить только Аргус 2 и т.д.
Да, точно, опечатался ))
Убрать текущий можно так:
Убрать текущий можно так:
&resources=`-[[*id]]`
Pavel, все работает!
От души Спасибо! )
P.S. в Минске не будете? Лично хочу сказать Спасибо )
От души Спасибо! )
P.S. в Минске не будете? Лично хочу сказать Спасибо )
Да не за что )
К сожалению, не буду.
К сожалению, не буду.
не рекомендовал бы я использовать LIKE, тем более со множеством значений. при определенном кол-ве записей всё будет безбожно тормозить. я поэтому и переделал все на MATCH… AGAINST, разница по скорости вышла раз в 100 на момент реализации
У меня товаров не много… похожих 3-4 товара, поэтому для меня подходит )
Но Спасибо за совет, на будущее учту )
Но Спасибо за совет, на будущее учту )
Вот кусок sql-запроса, который я использовал у себя в самописной фигнеНе на столько я силен в Модексе ))
В принципе пагинация мне и не нужна
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.