Фильтр по цене в валюте, отличной от дефолтной.

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

toxxxa M
Аватара
toxxxa M
Репутация: 4
Сообщения: 14
Зарегистрирован: 24.05.2016
С нами: 7 лет 10 месяцев
Откуда: Донецк украинский
Сайт

Сообщение #1 toxxxa » 24.05.2016, 22:43

Здравствуйте.

У меня, думаю, вполне типовая проблема, но решаю я её наверное уж очень ректально. Задача стоит хранить цены в бд в евро, а выводить пользователю по-умолчанию только в гривне, без возможности переключения валют.
Решаю так: настроил две валюты. Основная - EUR и вторая - UAH. Евро в админке стоит первой, но отключённой, чтобы единственной видимой пользователю валютой осталась в гривна. Хочу в связи с этим победить виджет аяксового фильтра по цене в шаблоне features.tpl, он оперирует в данном случае ценой не в гривне (из сессии) а основной в евро.
Как изменить сам слайдер я понял (добавил модификаторы |convert|strip:''):

Код: Выделить всё

<input ...
    value="{$prices->current->min|default:$prices->range->min|convert|strip:''}"
    data-price="{$prices->range->min|convert|strip:''}"
    ...>

<input ...
    value="{$prices->current->max|default:$prices->range->max|convert|strip:''}"
    data-price="{$prices->range->max|convert|strip:''}"
    ...>


Сам слайдер работает, но товары ищет неправильно. Я конечно разобрался, почему: currency_id в сессии совпадает с id первой доступной валюты $first_currency, поэтому при формировании запроса к БД в Products.php не включается коэфициент перевода валюты. Да и $prices->range по той же причине неправильный, и может еще что, я дальше не ковырял.

Логичным решением я думаю было бы еще в <input data-price> делать обратную конвертацию, но тут вот самое смешное: я не смог найти, где прописана функция модификатора convert для smarty чтобы добавить функционал |convert:EUR :)))

Поэтому просьба, подскажите где лежит этот |convert, я его сам поковыряю, или подскажите другое, более элегантное решение.

Спасибо-пожалуйста.
Онлайн-калькуляторы для типографий и РА: http://calc.in.ua

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Откуда: Днепр
Skype

Сообщение #2 m1hasik » 25.05.2016, 06:25

toxxxa писал(а):Здравствуйте.

У меня, думаю, вполне типовая проблема, но решаю я её наверное уж очень ректально. Задача стоит хранить цены в бд в евро, а выводить пользователю по-умолчанию только в гривне, без возможности переключения валют.
Решаю так: настроил две валюты. Основная - EUR и вторая - UAH. Евро в админке стоит первой, но отключённой, чтобы единственной видимой пользователю валютой осталась в гривна. Хочу в связи с этим победить виджет аяксового фильтра по цене в шаблоне features.tpl, он оперирует в данном случае ценой не в гривне (из сессии) а основной в евро.
Как изменить сам слайдер я понял (добавил модификаторы |convert|strip:''):

Код: Выделить всё

<input ...
    value="{$prices->current->min|default:$prices->range->min|convert|strip:''}"
    data-price="{$prices->range->min|convert|strip:''}"
    ...>

<input ...
    value="{$prices->current->max|default:$prices->range->max|convert|strip:''}"
    data-price="{$prices->range->max|convert|strip:''}"
    ...>


Сам слайдер работает, но товары ищет неправильно. Я конечно разобрался, почему: currency_id в сессии совпадает с id первой доступной валюты $first_currency, поэтому при формировании запроса к БД в Products.php не включается коэфициент перевода валюты. Да и $prices->range по той же причине неправильный, и может еще что, я дальше не ковырял.

Логичным решением я думаю было бы еще в <input data-price> делать обратную конвертацию, но тут вот самое смешное: я не смог найти, где прописана функция модификатора convert для smarty чтобы добавить функционал |convert:EUR :)))

Поэтому просьба, подскажите где лежит этот |convert, я его сам поковыряю, или подскажите другое, более элегантное решение.

Спасибо-пожалуйста.
Функция convert находится в файле api/Money.php

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #3 OkayCMS » 25.05.2016, 07:55

OkayCMS - мультивалютная система. Вы можете хранить цены в евро, а выводить пользователю в гривне без тех костылей что вы придумали.
Первой валютой ставите гривны так как это основная валюта для сайта. Делаете её активной. А в каждом товаре выбираете, в какой валюте указана его стоиомость. Его стоимость перемножается на курс из админки и выводится клиенту в основной валюте. Это сделано по умолчанию и не нужно устраивать игрища с первой неактивной валютой.

toxxxa M
Аватара
toxxxa M
Репутация: 4
Сообщения: 14
Зарегистрирован: 24.05.2016
С нами: 7 лет 10 месяцев
Откуда: Донецк украинский
Сайт

Сообщение #4 toxxxa » 25.05.2016, 21:28

OkayCMS писал(а):OkayCMS - мультивалютная система. Вы можете хранить цены в евро, а выводить пользователю в гривне без тех костылей что вы придумали.
Первой валютой ставите гривны так как это основная валюта для сайта. Делаете её активной. А в каждом товаре выбираете, в какой валюте указана его стоиомость. Его стоимость перемножается на курс из админки и выводится клиенту в основной валюте. Это сделано по умолчанию и не нужно устраивать игрища с первой неактивной валютой.
Я начал такие пляски конечно зря :) Меня смутило то, что товары импортируются из CSV всегда в валюте по-умолчанию. Но сейчас полез в import.php и ага... Нужно бы добавить на страницу импорта подсказку о валюте. Да и в example.csv тоже.
Онлайн-калькуляторы для типографий и РА: http://calc.in.ua

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #5 OkayCMS » 26.05.2016, 06:23

toxxxa писал(а):Я начал такие пляски конечно зря :) Меня смутило то, что товары импортируются из CSV всегда в валюте по-умолчанию. Но сейчас полез в import.php и ага... Нужно бы добавить на страницу импорта подсказку о валюте. Да и в example.csv тоже.
Да, нужно будет сделать это в следующей версии.


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 9 гостей