Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Поле "Цена" в фильтре

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

Ответов: 9
Просмотров: 6064
Последний ответ 28 Апреля 2012, 06:02:17
от KTI
Checkbox в фильтре в режиме "ИЛИ"

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

Ответов: 15
Просмотров: 4589
Последний ответ 18 Июля 2016, 07:43:18
от e.ioffe
Сортировка товаров каталога - по цене, названию, популярности

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

Ответов: 26
Просмотров: 16805
Последний ответ 29 Декабря 2016, 19:17:07
от Axiomateria
Не срабатывает скидка при опционных свойствах и нулевой цене

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

Ответов: 13
Просмотров: 5079
Последний ответ 28 Августа 2013, 16:21:16
от atach
Смена последовательности фильтруемых параметрах в фильтре XSLT

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

Ответов: 4
Просмотров: 2960
Последний ответ 02 Августа 2012, 17:15:33
от admin

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

*

Masalkinn

  • *
  • 7
  • +0/-0
    • Просмотр профиля
Фильтре по цене.
« : 02 Октября 2011, 02:02:10 »
Всем доброго времени суток!
Есть следующая задача, создать фильтр по цене от и до. Но в следующем формате:
Выпадающий список:
от 0 до 1500
от 1500 до 2500
от 2500 до 5000
и тд.
фильтр выводится через макрос %catalog search()%
в шаблоне создал
$FORMS['search_block_line_price'] = <<<END
<select name="price_range" class="textinputs"">
        <option selected=""  value="">цена</option>
        <option value="0 1500">0-1500</option>
        <option value="1500 2500">1500-2500</option>
        <option value="2500 5000">2500-5000</option>
        </select>
       
        <input type="hidden"  name="fields_filter[price][0]" value=""/>
        <input type="hidden"  name="fields_filter[price][1]" value=""/>

Как видит инпуты скрыты от глаз пользователей. Возник вопрос как из <option value="0 1500"> подставить значения в эти инпуты.
Маюсь уже часов 7, никак не могу решить проблему.
Может кто реализовывал уже такое?
Или может у кого есть идеи?
Спасибо!

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #1 : 02 Октября 2011, 11:25:44 »
тебе надо передать значение выбранного элемента из выпадающего списка в скрытые поля, если ты четко знаешь эти диапазоны то можно просто прописать ручками.

то есть на событие выбора элемнета списка повесить js функцию которая либо делить полученное значение на 2 числа и подставляет их (тогда значение списка будет выглядеть так "1500 2500" или "1500,2500" чтобы js мог эту строчку распарсить на 2 числа) либо отказаться от парсинга, а задавать в выпадающем списке в значении чисто 1,2 или 3 а в js функции ставить ему в соответствие пару чисел. я бы делал 2 вариант (хотя первый ничуть не хуже)

получилось бы примерно так
где-то выше прописываешь js функцию (так как она использует jQuery функции, не забудь проверить чтобы jQuery была подключена)
function put_price_value(value) {
var matrix = [ [0,1500], [1500,2500], [2500,5000] ],
              index=parseInt(value) - 1;
        jQuery('#price0').val(matrix[index][0]);
        jQuery('#price1').val(matrix[index][1]);
}

а html получается такой:
<select name="price_range" onchange="put_price_value(this.options[this.selectedIndex].value)" class="textinputs"">
        <option selected=""  value="">цена</option>
        <option value="1">0-1500</option>
        <option value="2">1500-2500</option>
        <option value="3">2500-5000</option>
</select>
       
        <input type="hidden"  id="price0" name="fields_filter[price][0]" value=""/>
        <input type="hidden"  id="price1" name="fields_filter[price][1]" value=""/>

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #2 : 08 Ноября 2011, 21:51:23 »
А как это реализовать в XSLT
Требуется на главной странице сделать фильтр по цене такого плана как описанно выше

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #3 : 09 Ноября 2011, 02:57:01 »
все точно также, таже js функция которая парсит содержимое выбранного option в выпадающем списке, можете использовать мою js
function put_price_value(value) {
var matrix = [ [0,1500], [1500,2500], [2500,5000] ],
              index=parseInt(value) - 1;
        jQuery('#price0').val(matrix[index][0]);
        jQuery('#price1').val(matrix[index][1]);
}

можете написать свою которая будет принимать строку с 2 числами и парсить её на 2 числа, тут уж как вам удобнее

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #4 : 24 Мая 2012, 19:20:19 »
Не могу понять как будет все выглядеть если ценовые значения следующие:
[1,500], [501,1000], [1001,1500], [1501,2000], [2001,3000], [3000,100000]

Подскажите пожалуйста

И еще проблема, если в форме присутствует значение size="1" Фильтрация не происходит.

<dl class="selectContainer">
<dt><label for="itemPrice">Подбор по ценовой категории:</label></dt>
<dd>
<select name="itemPrice" size="1" class="selectbox" id="itemPrice" name="price_range" onchange="put_price_value(this.options[this.selectedIndex].value)" class="textinputs"">
<option value="1">0-1500</option>
<option value="2">1500-2500</option>
<option value="3">2500-5000</option>
</select>
<input type="hidden"  id="price0" name="fields_filter[price][0]" value=""/>
<input type="hidden"  id="price1" name="fields_filter[price][1]" value=""/>
</dd>
</dl>

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #5 : 02 Июля 2012, 10:36:43 »
_http://pro-busy.ru.xsph.ru/shop/avtorskie_ukrasheniya/busy/

Так и не получилось решить данную проблему.
Помогите пожалуйста в решении данной проблемы.
Отказывается работать, очень прошу о помощи

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #6 : 03 Июля 2012, 08:54:50 »
У вас все бы работало с исппользованием js кода написанного выше, но так как у вас используется NiceForm js плагин, то он уже подменяет оригинальный select на совокупность div, ul и т.п. элементов придавая им нужный вид. Поэтому функция onchange="put_price_value(this.options[this.selectedIndex].value)" прописанная вами к select игнорируется ,так как js плагин сам подставляет новые обработчики и пользователь выбирает уже ul элемент, а событие onchange у скрытого элемента select не наступит никогда.

Поэтому, если вы хотите добавить свой js обработчик, который разбивает выбранное в выпадающем списке значение на 2 составляющих и записывает их в скрытые поля
<input type="hidden"  id="price0" name="fields_filter[price][0]" value=""/>
<input type="hidden"  id="price1" name="fields_filter[price][1]" value=""/>

надо лезть в плагин NiceForm искать там обработчик события выбора выпадающего списка и добавлять уже там все манипуляции по разбивке значения цена на 2 скрытых поля

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #7 : 04 Июля 2012, 13:08:09 »
Очень прошу о помощи.
2 дня ковырял этот скрипт, но так ни чего не добился.
Подскажите пожалуйста

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #8 : 05 Июля 2012, 12:32:36 »
скиньте файл js'ки, которая изменяет select'ы

*

korogan

  • ***
  • 188
  • +3/-0
    • Просмотр профиля
Re:Фильтре по цене.
« Ответ #9 : 05 Июля 2012, 12:47:06 »
Прикрепил JS