Как сделать сортировку товаров по цене, названию?
Здравствуйте!
Использую minishop2 и столкнулся с тем, что не знаю, как вывести на странице категории товаров сортировку по цене, названию, количеству выводимых товаров? Подскажите, пожалуйста, кто знает.
Заранее спасибо!
Использую minishop2 и столкнулся с тем, что не знаю, как вывести на странице категории товаров сортировку по цене, названию, количеству выводимых товаров? Подскажите, пожалуйста, кто знает.
Заранее спасибо!
Комментарии: 20
Доброго времени суток! Я подобную задачу решал через компонент mSearch2.
Вы хотите сказать, что мне нужно купить целый компонент, чтобы решить мою задачу? Там же огромный функционал, большая половина которого мне не нужна, например, фильтрация данных или живой поиск. Ну живой поиск, ладно, это отличная вещь, но, например, тот же фильтр не в каждом магазине используется, но наверняка удорожает общую стоимость компонента.
Первый раз делаю магазин на MODX с использованием minishop2. Отличный компонент магазина. До этого делал на Opencart и отсутствие в minishop2 по умолчанию такой сортировки меня немного расстроило.
Может другое есть решение?
Первый раз делаю магазин на MODX с использованием minishop2. Отличный компонент магазина. До этого делал на Opencart и отсутствие в minishop2 по умолчанию такой сортировки меня немного расстроило.
Может другое есть решение?
Я сам только недавно начал осваивать Modx, и как понял нужно самому написать сниппет.
вот здесь этот вопрос поднимали --> modx.ru/vopros-otvet/info/2029/
Спасибо. Вижу что за два с небольшим года так и нашлось решения.
Обращаюсь к разработчику minishop2 Василию Наумкину! Если есть такая возможность сделайте, пожалуйста, в следующих обновлениях minishop сортировку некоторых параметров по умолчанию. И еще хотелось бы, чтобы компонент поиска и фильтрации можно было бы купить по отдельности. Вы же когда покупаете, например, холодильник, стиралку или автомобиль, делаете выбор, согласно характеристикам, необходимым Вам и не хотите переплачивать за то, что Вам не нужно.
Я пока пишу, понимаю, что, наверное, разработчик меня пошлет подальше с моими запросами.)) Но тем не менее, попытка не пытка.
Я пока пишу, понимаю, что, наверное, разработчик меня пошлет подальше с моими запросами.)) Но тем не менее, попытка не пытка.
ну поискал бы тут на форуме!!! почему предлагаю это — я уже псыкал разжеванный ответ!!!
еще раз, ок))):
1. создаешь сниппет под названием yaSuperProger
еще раз, ок))):
1. создаешь сниппет под названием yaSuperProger
<?php
//умолчальная сортировка по убыванию id
$DetectGetBy = 'id';
$DetectGetDir = 'desc';
//подсветка активного пункта
$DetectGetHL = 'default';
$DetectGetText = 'сначала новинки';
if (!empty($_GET['sort'])) {
if ($_GET["sort"] == "price_up") { //сортировка по возрастанию цены
$DetectGetBy = 'Data.price';
$DetectGetDir = 'asc';
$DetectGetHL = 'price_up';
$DetectGetText = 'сначала подешевле';
}
if ($_GET["sort"] == "price_down") { //сортировка по убыванию цены
$DetectGetBy = 'Data.price';
$DetectGetDir = 'desc';
$DetectGetHL = 'price_down';
$DetectGetText = 'сначала подороже';
}
}
$modx->setPlaceholder('DetectGetBy', $DetectGetBy);
$modx->setPlaceholder('DetectGetDir', $DetectGetDir);
$modx->setPlaceholder('DetectGetHL', $DetectGetHL);
$modx->setPlaceholder('DetectGetText', $DetectGetText);
2. в шаблон страницы категории вставляешь вызов этого сниппета и чанк с кнопками, или упрощенно без чанка так:[[!yaSuperProger]]
<div class="row box-filter">
<div class="col-sm-12">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle sort" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
[[+DetectGetText]] <span class="caret"></span>
</button>
<ul class="dropdown-menu [[+DetectGetHL]]">
<li class="first"><a class="sort_default" href="[[~[[*id]]]]">сначала новинки</a></li>
<li><a class="sort_price_up"href="[[~[[*id]]]]?sort=price_up">сначала подешевле</a></li>
<li class="last"><a class="sort_price_down" href="[[~[[*id]]]]?sort=price_down">сначала подороже</a></li>
</ul>
</div>
</div>
</div>
[[!pdoPage?
&element=`msProducts`
&limit=`12`
&depth=`0`
&sortby=`[[+DetectGetBy]]` &sortdir=`[[+DetectGetDir]]`
&ajaxMode=`default`
]]
еще есть вариант подставлять информацию из гет-параметра сразу в вызов pdoPage, через штатный сниппет alias-как-то-там-не-помню, так советуют в 90%, НО не будет юзабельности, а именно как в моем варианте — подсветка выбранного пункта и вставка того что выбрано в первую (видимую) option селект, согласись, клиент будет чувствовать себя неуютно, если выбрав какую-то сортировку и полазив по списку товаров, он захочет например другую сортировку, а какая текущая — огромный хз!!! в моем варианте это все обеспечивается.
ну и конечно мой вариант — с перезагрузкой страницы, если надо аджакс — то покупай мсеарч2
ну и конечно мой вариант — с перезагрузкой страницы, если надо аджакс — то покупай мсеарч2
Спасибо! Попробую. Мне хватит варианта с перезагрузкой.
ну давай! сорт по имени и фильтр количество товаров на странице аналогично дописать можно, мне некогда, принцип должен быть понятен. принцип работы основан на статьях docs.modx.pro/components/pdotools/snippets/pdopage и docs.modx.pro/components/minishop2/snippets/msproducts, советую тщательно прочитать
Доброго времени суток, что то у меня не получается сделать сортировку хотя все сделал как написано, скажите код рабочий?
Добрый вечер. Хоть я и просил помочь мне с сортировкой, но до применения предложенного тут решения дело так и не дошло. Так что, насчет работоспособности кода, сказать ничего не могу.
Подскажите, может вы каким то другим вариантом воспользовались?
Нет. От сортировки отказались. Просто не понадобилась.
Я делаю так
sortItDir.php'
Работает с перезагрузкой страницы, что можно считать минусом. А можно и плюсом, потому что сортировка без перезагрузки приводит к тому, что пагинация перестает работать. Если по умолчанию на странице 20 товаров, отсортировали и скажем товаров стало 10, то изменение пагинации требует сложной (уточню — для меня сложной работы с хешем), а так все ок.
<div class="sort-title">Сортировать по:</div>
<div class="sort-item">
<a href="{$_modx->resource.id | url}?sortby=price&sortdir=DESC">убыванию </a>
<i class="zmdi zmdi-long-arrow-down"></i>
</div>
<div class="sort-item">
<a href="{$_modx->resource.id | url}?sortby=price&sortdir=ASC">возрастанию</a>
<i class="zmdi zmdi-long-arrow-up"></i>
</div>
В вызове сниппета, который будет выводить товары'sortby' => $_modx->runSnippet('sortItName.php'),
'sortdir' => $_modx->runSnippet('sortItDir.php'),
Ну и собственно содержание этих сниппетовsortItDir.php'
<?php
$request=$_GET['sortby'];
switch($request) {
case "price":
return ("Data.price");
break;
case "rating":
return("rating");
break;
default:
return("{\"menuindex\":\"DESC\"}");
break;
}
sortItName.php<?php
$request=$_GET['sortdir'];
switch($request) {
case "ASC":
return("ASC");
break;
case "DESC":
return("DESC");
break;
default:
return("DESC");
break;
}
Таким образом к ссылкам можно прикреплять любые поля и направления в GET параметрах.Работает с перезагрузкой страницы, что можно считать минусом. А можно и плюсом, потому что сортировка без перезагрузки приводит к тому, что пагинация перестает работать. Если по умолчанию на странице 20 товаров, отсортировали и скажем товаров стало 10, то изменение пагинации требует сложной (уточню — для меня сложной работы с хешем), а так все ок.
Спасибо огромнейшее, за предоставленнный пример!
Можно кстати это делать гораздо лучше если добавить в вариант Уткина сортировку
ilyaut.ru/tips-and-tricks/simple-ajax-filter-using-pdopage/
ilyaut.ru/tips-and-tricks/simple-ajax-filter-using-pdopage/
спасибо за совет
выложите кому нежалко пожалуйста
Можно кстати это делать гораздо лучше если добавить в вариант Уткина сортировкубуду ну очень признателен если ктонибудь приведёт пример, как сделать как на офицальном сайте ms2 demo пример фильтрации товаров со слайдером по цене
ilyaut.ru/tips-and-tricks/simple-ajax-filter-using-pdopage/
выложите кому нежалко пожалуйста
подскажите как дополнить с сортировкой по названию, кому несложно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.