Как задать нестандартный ценовый интервал для блока пошаговой фильтрации?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 17:10

Добрый день! У меня в фильтре используется слайдер, для формирования цены и все бы хорошо, но надо диапазон преобразовать в форматный понятный для мадженты.
Нашел статью
http://inchoo.net/ecommerce/magento/custom-price-filter/
на там все просто и от стандартного функционала не отличается а у меня цифры такого плана 123 - 543 или 999 - 1011 и не понятно как их привести к виду 1%2C10000″ или может я запарился уже...
Буду благодарен за помощь и тык в очевидное :)

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 17:28

Вам будет полезно прочитать про функцию urlencode.

#3 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 17:35

Я не совсем верно написал. то что 1%2C10000 преобразуется в 1,10000 я знаю и видел это в стандартном блоке фильтрации. Но для решения задачи стандартный механизм не подходит или я ошибаюсь?

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 17:37

Для фильтрации по цене стандартный механизм фильтрации по цене подходит.

#5 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 17:42

Просмотр сообщенияIgorN (22.03.2011 17:42) писал:

Похоже все таки к концу дня просто запарился.

Просмотр сообщенияДмитрий Федюк (22.03.2011 17:37) писал:

Для фильтрации по цене стандартный механизм фильтрации по цене подходит.


Похоже все таки к концу дня просто запарился.
Надо расчитать первый и второй коэфициент

#6 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 17:55

Блин, не получается что то...

#7 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 18:05

«...if we were to write something like 3%2C10 it would be the price range from 20-30, where 3 stands for third range of tens (number 10). First is from 0-10, second 10-20, third 20-30.»

Бранко имеет в виду, что в записях вида «3%2C10», где вы передаёте системе числа «3» и «10»:
  • первое число - это нижняя граница цены, к которой вы добавили второе число и затем разделили на второе число.
  • второе число - это разность верхней и нижней границы цены


#8 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 18:06

Спасибо большое!!!, а с формулой запарился.

#9 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 18:08

Во многих CMS, например, в URL постраничной навигации пишут: «&page=3&step=10» - это то же самое.

#10 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 18:17

Что то не то, с первым числом.
К примеру 315 - 965
Если следовать п1 то
315/965 + 965 = 965.32
а второе сисло п2
650
В итоге получаем 965,650
<span class="price">626 600,00 €</span> - <span class="price">627 250,00 €</span>

Или я опять что то напутал...

#11 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 18:19

Чтобы не путать, обратитесь к какому-нибудь коллеге с математическим образованием - он объяснит.

#12 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 18:24

Просмотр сообщенияДмитрий Федюк (22.03.2011 18:19) писал:

Чтобы не путать, обратитесь к какому-нибудь коллеге с математическим образованием - он объяснит.

Нет по близости поэтому и обратился :)
для приведенного случая коэффициент должен быть примерно таким 1.485,650
Поищу...

#13 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 18:52

Пообщались, пришли к выводу, что рассчитать не получится и надо либо самим фильтр делать либо переопределять модель Price для расчета цены по другому алгоритму, получается не очень хорошо :(

#14 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

22.03.2011 18:53

По каким конкретно причинам рассчитать не получится?

#15 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.03.2011 19:02

Просмотр сообщенияДмитрий Федюк (22.03.2011 18:53) писал:

По каким конкретно причинам рассчитать не получится?

Цитата

[17:26:02] Игорь: http://www.ttstech.n...in-magento.html
[17:26:24] Игорь: там в конце приведен пример того как строится стандартный фильтр по цене
[17:27:24] Игорь: т.е. 0-1000 преобразуется в 1,1000 где второй коэффициент это разность макс - мин, а первый коэффициент...
[17:28:13] Игорь: вот как расчитать правильно коэффициенты для 315-965 к примеру... у меня уже башка не соображает
[17:29:52] Артем: <page>,<count_per_page>
[17:29:59] Антон: а как это всё связано с нашим таском?
[17:30:15] Игорь: ага, <page>,<count_per_page>
[17:30:23] Антон: там предлагается грубое разбиение
[17:30:52] Игорь: понимаешь я использую стандартный механизм фильтрации
[17:31:13] Игорь: и сделать там так же как у тебя было в ajax.phtml не получится
[17:31:35] Игорь: надо ?price=1%2C1000
[17:32:43] Артем: (965 - 315)/count_per_interval * page
[17:32:59] Артем: походу так
[17:33:53] Артем: где count_per_interval - ценовой порог
[17:34:04] Артем: 100€ к примеру
[17:34:24] Игорь: так у нас в слайдере порога то нет
[17:34:32] Антон: значит он = 1 :)
[17:34:43] Артем: значит бери макс цену
[17:34:51] Игорь: ага,
[17:34:58] Артем: тогда будет только 1 страница
[17:35:46] Игорь: т.е. 965 если следоват ьпримеру выше?
[17:35:52] Артем: ?price=1,<max_price>
[17:35:58] Артем: думаю да
[17:36:42] Игорь: не 1,965 не катит диапазон получается вида 0 - 965
[17:37:51] Антон: Я думаю тут не подходит средство - оно для разбиения на "сеты"
[17:38:03] Артем: кажется я понял суть, тут нужен наибольший общий делитель
[17:38:15] Антон: там нужна степень 10
[17:38:34] Артем: да на степень все равно, диапазон задается
[17:38:48] Артем: НОД и будет в качестве делителя
[17:38:56] Артем: диапазона
[17:39:41] Антон: а если у тебя будет два простых числа? :)
[17:39:51] Артем: мда
[17:39:52] Антон: я говорю - инструмент не под наши нужды


#16 shopeho
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 07.04.2011

04.05.2011 21:46

Разобрались?

Столкнулся сегодня, вот что получилось у меня:

Например нужен фильтр 315 - 965

Сначала вычисляем второе число это: 965-315 = 650
Первое число вычисляем так: 965/650 = 1.484615385

Итого фильтр получается - ?price=1.484615385%2C650

Тоже хочу прикрутить слайдер для цены :)

#17 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

05.05.2011 16:29

Спасибо, разобрались. К концу дня башня обычно не варит и запары случаются :)

Поделиться темой: