Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Поиск по каталогу (поиск товаров/объектов)

Автор samРаздел Шаблоны XSLT

Ответов: 14
Просмотров: 3250
Последний ответ 26 Января 2015, 12:07:22
от Axiomateria
Изменение количества товара в списке товаров и карточке товара

Автор bepluyРаздел JS и AJAX

Ответов: 2
Просмотров: 636
Последний ответ 14 Ноября 2015, 13:52:43
от bepluy
Импортировать "Опционные свойтва" товаров в UMIDump из CML 2.0. Хэлп!

Автор Alex_nosРаздел Custom макросы

Ответов: 3
Просмотров: 2768
Последний ответ 09 Февраля 2012, 13:08:00
от admin
Добавление тегов для товаров, и вывод блока с тегами в любом месте сайта

Автор FelixTheCatРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 1883
Последний ответ 26 Июля 2014, 10:58:09
от FelixTheCat
фильтр товаров с условием OR и поиск по нескольким (не всем) разделам каталога

Автор bosyaРаздел Custom макросы

Ответов: 3
Просмотров: 3346
Последний ответ 18 Мая 2012, 11:08:37
от web-industry

0 Пользователей и 1 Гость просматривают эту тему.

*

chutovo_kram

  • *
  • 13
  • +0/-0
    • Просмотр профиля
Всем привет.
Пробую сделать фильтр с выпадающим списком (соритровка по убыванию и по возрастанию). Товары я получаю через макрос %data doSelection%. Вопрос: как вызвать макрос при нажатии на элемент option? Как привязать макрос к этому действию?

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка товаров с помощью select
« Ответ #1 : 21 Мая 2014, 09:23:51 »
Для начала, фильтрация и сортировка - это разные термины.

Теперь по поводу сортировки элементов, которые выводятся через макрос %data doSelection()%.

В случaе, если вы работает с usel протоколом, то вам необходимо в usel файл добавить параметры, которые будет задавать название поля  и направление для сортировки ( (см. документацию)).

Пример usel файла для вывода всех товаров с определенной сортировкой:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="catalog" method="object" />
</target>
<sort order="{2}">{1}</sort>
</selection>

Теперь, при вызове макроса doSelection, мы можем передать параметр 1 и 2.


Нам осталось сделать так, чтобы при выборе выпадающего списка система передавала макросу doSelection параметры сортировки.

Сделаем это так:
1. создадим js обработчик, который при выборе значения из выпадающего списка для сортировки будет перегружать страницу с заданными параметрами
<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
    <option value="">Select...</option>
    <option value="?field_name=price&order=ascending">Цена по возрастанию</option>
    <option value="?field_name=price&order=descending">Цена по убыванию</option>
</select>
2. при загрузке страницы с макросом doSelection будем подхватывать параметры из адресной строки (пример параметров ?field_name=price&order=descending) и передавать их в макрос. Для этого добавим макрос в файл /classes/modules/custom.php
public function getReq($name) {
$value = getRequest($name);
return $value;
}

3. И сделаем вызов этого макроса при вызове doSelection для передачи параметров
%data doSelection('usel_tpl', usel_file , %custom getReq(field_name)%,  %custom getReq(order)%)%


P.S. все примеры писались тут же без проверки, так что могут мелкие баги, но суть ясна и направление задано, пробуйте.

*

chutovo_kram

  • *
  • 13
  • +0/-0
    • Просмотр профиля
Re:Сортировка товаров с помощью select
« Ответ #2 : 29 Мая 2014, 14:24:32 »
Спасибо огромное, извините, что долго не отвечал. Почитал форум и сделал через выборку с usel с помощью ajax.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:Сортировка товаров с помощью select
« Ответ #3 : 29 Мая 2014, 14:33:58 »
Это прекрасный результат  ;)