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

Автор fantom103Раздел Шаблоны TPL

Ответов: 6
Просмотров: 7593
Последний ответ 02 Октября 2014, 14:14:39
от fantom103
Скрыть ненужные позиции фильтра каталога (выпадающий список)

Автор smartwebРаздел Макросы UMI.CMS

Ответов: 1
Просмотров: 1802
Последний ответ 17 Ноября 2016, 23:45:58
от aghigay
Вывод фильтра в разделах каталога второго уровня.

Автор s.kirillРаздел Макросы UMI.CMS

Ответов: 11
Просмотров: 5878
Последний ответ 19 Января 2017, 09:48:55
от e.ioffe
Вывод одного фильтра на всех страницах?

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

Ответов: 7
Просмотров: 3550
Последний ответ 14 Мая 2014, 12:24:32
от admin
Вывод фильтра в главном шаблоне

Автор WenLeksРаздел Настройка системы и модулей

Ответов: 27
Просмотров: 7879
Последний ответ 21 Июля 2014, 16:57:34
от WenLeks

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

*

sanya@lum.ru

  • *
  • 8
  • +0/-0
    • Просмотр профиля
задание интервала для фильтра
« : 07 Октября 2013, 13:52:30 »
Здравствуйте! Подскажите как можно реализовать поиск по числовому интервалу в фильтре при выборке товаров из каталога, например от 2 - 10 желательно чтобы цифры вводились в разных полях.
Может хотя бы направление в каком копать.

*

sanya@lum.ru

  • *
  • 8
  • +0/-0
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #1 : 07 Октября 2013, 14:52:15 »
Спасибо всем. Нашел
<input name="fields_filter[{@name}][0]" value="{value_from}"

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #2 : 08 Октября 2013, 17:07:34 »
Спасибо всем. Нашел
<input name="fields_filter[{@name}][0]" value="{value_from}"

как вы правильно заметили тут все зависит от имени input. Основа всегда одинакова fields_filter[{@name}], а дальше есть варианты:
[0] - значение "от"
[1] - значение "до"
и т.п.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #3 : 27 Ноября 2014, 00:46:44 »
В продолжении темы у меня такой вопрос:

Всё тот же шаблон с теми же полями и в моём случае фильтруем рост "от" минимального и "до" максимального посредством бегунка.
ОТ
<input type="text" name="fields_filter[{@name}][0]" value="{value_from}" readonly="readonly" class="range_field mod_1 inpMin_1" />
ДО
<input id="amount_1" type="text"  name="fields_filter[{@name}][1]" value="{value_to}" readonly="readonly" class="range_field mod_1 inpMax_1" />

Значение в поле value="{value_from}" выводится только после того, как бегунком воспользоваться, то есть значение размера (допустим ОТ  (минимальный) "150" и ДО (максимальный) "180") подставляются в  value="{value_from}" и value="{value_to}" соответственно уже при движении бегунком.
Но до того их минимальных и максимальных значений не видно в фильтре.

Как быть ?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #4 : 27 Ноября 2014, 09:59:49 »
я правильно понимаю, что у вас есть бегунок, созданный силами js, который отображает и сами бегунки ("от" и "до") и поля для ввода значения. При перемещении бегунков значения в полях меняется. Но при загрузке страницы, пока мы еще не трогали бегунки, в полях нет никаких значений.
Я все правильно описал?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #5 : 27 Ноября 2014, 11:34:19 »
я правильно понимаю, что у вас есть бегунок, созданный силами js, который отображает и сами бегунки ("от" и "до") и поля для ввода значения. При перемещении бегунков значения в полях меняется. Но при загрузке страницы, пока мы еще не трогали бегунки, в полях нет никаких значений.
Я все правильно описал?
ДА.
Совершенно точно - я забыл отметить, что бегунок на JS.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #6 : 27 Ноября 2014, 12:03:43 »
тогда вам надо в input, который отображает значение, вставлять либо value="{value_from}" либо минимальное значение (оно у вас в какой-то переменной наверняка хранится), если {value_from} пустой. То есть поставьте в xsl проверку через if и xsl:attribute

P.S. тоже самое с полем максимальное значение

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #7 : 27 Ноября 2014, 12:28:25 »
тогда вам надо в input, который отображает значение, вставлять либо value="{value_from}" либо минимальное значение (оно у вас в какой-то переменной наверняка хранится), если {value_from} пустой. То есть поставьте в xsl проверку через if и xsl:attribute

P.S. тоже самое с полем максимальное значение
для "ОТ" я пробую такую вещь применить,
                    <input type="text" name="fields_filter[{@name}][0]" value="110" readonly="readonly" class="range_field mod_1 inpMin_1" />
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

где value="110" видимое минимальное значение как бы по умолчанию, но оно не заменяется на другое значение при движении бегунка...
Видно, что я что-то не доделал в конструкции                    
 <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #8 : 27 Ноября 2014, 12:44:57 »
Скорее всего, проблема в том, что xsl attribute действует на открытый выше тег, а у вас input закрыт. Надо так:
<input type="text" name="fields_filter[{@name}][0]" value="110" readonly="readonly" class="range_field mod_1 inpMin_1" >
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>
</input>

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #9 : 27 Ноября 2014, 13:15:08 »
Скорее всего, проблема в том, что xsl attribute действует на открытый выше тег, а у вас input закрыт. Надо так:
<input type="text" name="fields_filter[{@name}][0]" value="110" readonly="readonly" class="range_field mod_1 inpMin_1" >
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>
</input>
Спасибо! Сработало.
Однако вот какой нюанс: при выводе результатов поиска по отфильтрованному значению роста посредством бегунка значение атрибута value так и остаётся видимым как изначальное "110".
То есть пользователь выбрал значение "ОТ" = 150 и в результате вывода ему товары вывелись от 150 и далее, но при этом пользователю показывается на бегунке прежнее значение "ОТ" = "110". Это я к тому, что пользователь может не понять, что ему результаты вывелись, которые он и отфильтровывал.
Как сделать так что бы при выводе результатов фильтрации по товарам показывалось уже то значение атрибута value, которое выбрал пользователь ?

Djn

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #10 : 27 Ноября 2014, 13:29:05 »
либо  при генерации страницы ваш чыд код не подставляет value_from (тогда проверяйте условие), либо в js есть еще директивы которые выставляют значение всегда на начало (в js ползунки , иногда надо передавать значения для сдвигания ползунка)

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #11 : 27 Ноября 2014, 13:45:29 »
либо  при генерации страницы ваш чыд код не подставляет value_from (тогда проверяйте условие)
Уверен, что именно здесь неувязочка
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

value !=''" - всё-таки может быть вот с этим что-то не так ?..
.
либо в js есть еще директивы которые выставляют значение всегда на начало (в js ползунки , иногда надо передавать значения для сдвигания ползунка)

Вот они самые: по умолчанию ОТ = "110" и ДО "190"
$(function () {
   slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
   slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #12 : 27 Ноября 2014, 15:46:48 »
Цитировать
value !=''" - всё-таки может быть вот с этим что-то не так ?..
.

это, вы можете проверить самостоятельно проверяя html страницы, который генерится в разных случаях (с фильтрами и без)

Цитировать
Вот они самые: по умолчанию ОТ = "110" и ДО "190"
$(function () {
   slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
   slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});

Вот, нет ли среди этого js инструкции, которая говорит, при инициализации выстави значение в полях и ролики ОТ = "110" и ДО "190" соответственно

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:задание интервала для фильтра
« Ответ #13 : 27 Ноября 2014, 17:57:16 »
Цитировать
Вот они самые: по умолчанию ОТ = "110" и ДО "190"
$(function () {
   slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
   slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});
Вот, нет ли среди этого js инструкции, которая говорит, при инициализации выстави значение в полях и ролики ОТ = "110" и ДО "190" соответственно

JS - вообще не мой конёк  ??? , файл полностью выглядит  вот так:

$(function () {
slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});
function slider_f(slider,inputMin,inputMax, valMin, valMax, valBegin, valEnd, steps) {
var $slider = $(slider),
$inputMin = $(inputMin),
$inputMax = $(inputMax);

$slider.slider({
min: valMin,
max: valMax,
values: [valBegin, valEnd],
range: true,
step: steps,
stop: function (event, ui) {
$inputMin.val($slider.slider("values", 0));
$inputMax.val($slider.slider("values", 1));

},
slide: function (event, ui) {
$inputMin.val($slider.slider("values", 0));
$inputMax.val($slider.slider("values", 1));
}
});

// фильтрация ввода в поля
$('input.range_field').keypress(function (event) {
var key, keyChar;
if (!event) var event = window.event;

if (event.keyCode) key = event.keyCode;
else if (event.which) key = event.which;

if (key == null || key == 0 || key == 8 || key == 13 || key == 9 || key == 46 || key == 37 || key == 39) return true;
keyChar = String.fromCharCode(key);

if (!/\d/.test(keyChar))    return false;

});
}
« Последнее редактирование: 27 Ноября 2014, 18:01:58 от Axiomateria »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:задание интервала для фильтра
« Ответ #14 : 27 Ноября 2014, 18:45:43 »
пусть не ваш, но попробуйте руками поменять значения 110 и 190 в вызове

 slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);

что-то произойдет, а там уже будете думать как их туда подставить