pechkin

Отображение валют

Recommended Posts

Цена на сайте отображается в рублях и в $ т.д. Как сделать отображение только в рублях, даже если человек указал в $.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. В приложении валюта убрать не нужную валюту.

2. В файлах выводах принудительно отключить cureid и прописать "руб"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так ведь не будет конвертации. Пример: человек указал 100$, вместо "100$", появляется 1500000руб

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

такого не реализовано.

Надо дописывать, дёргать курс ЦБ или ставить свой

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Таки не сегодня)))

 

Немного теории. При включенном менеджере валют в сетке всегда доступно дополнительное значение для поля price. Называется оно price_ue и содержит в себе приведенное к валюте, обозначенной дефолтной в менеджере валют, значение.

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

 

Это не скорую руку.

 

На не скорую руку:

1. Для начала необходимо загнать в шаблон валюты и их курсы. Делается это в контроллере шаблонов (/template/frontend/шаблон/main/main.php). Логично сделать это максимально повыше в main(), где-то сразу после global $__site_title, $folder, $smarty;

if(!isset($_SESSION['site_cache']['courses'])){$DBC=DBC::getInstance();$query='SELECT * FROM '.DB_PREFIX.'_currency';$stmt=$DBC->query($query);if($stmt){while($ar=$DBC->fetch($stmt)){$courses[$ar['currency_id']]=$ar;}}$_SESSION['site_cache']['courses']=$courses;}$this->template->assign('_courses', $_SESSION['site_cache']['courses']);

Можно обойтись и без сохранения в сессию, а предусмотреть другой вариант, например создавать готовый файл с php-массивом и при наличии оного просто инклудить. Но это уже тонкости. Главное, что количество запросов на получение списка валют мы снизим.

 

2. Теперь в шаблоне у нас есть массив валют-курсов доступный в {$_courses} и предоставляющий доступ к валюте по ее ид. Запросив {$_courses[4]} мы получим данные валюты с ид=4.

 

3. Как пользоваться.

{if (int)$grid_items[i].price!=0}{foreach from=$_courses item=_course}<br>{$_course.code}: {(($grid_items[i].price*$_courses[$grid_items[i].currency_id].course)/($_course.course))|number_format:0:",":" "}{/foreach}{/if}

Данный кусочек проверяет не нулевое ли значение цены и потом проходится по массиву валют, выводя цену объекта во всех зарегистрированных валютах сайта.

 

Если нужно выдать в какой-то конкретной валюте (c ид=4 например) и она не является дефолтной

{if (int)$grid_items[i].price!=0}{(($grid_items[i].price*$_courses[$grid_items[i].currency_id].course)/($_courses[4].course))|number_format:0:",":" "}{/if}

4. В карточке все абсолютно аналогично, за исключением того, что значения currency_id и price необходимо получать как currency_id.value и price.value ({$data.currency_id.value}, {$data.price.value}) того, что понятия приведенной цены и самой price_ue в данных в карточке не существует. Все остальные процедуры одинаковы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Таки не сегодня)))

 

Немного теории. При включенном менеджере валют в сетке всегда доступно дополнительное значение для поля price. Называется оно price_ue и содержит в себе приведенное к валюте, обозначенной дефолтной в менеджере валют, значение.

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

 

Это не скорую руку...

 

Написано грамотно, но ни х*я не понял... :)

Константин, скажи проще, в результате вышеописанных танцев с бубном будет рядом с ценой в зверобаксах стоять цена в рублях - пересчитанная исходя из курсов в Менеджере валют?

 

Смысл в том, что первоочередной ценой будет цена, указанная продавцом (она может быть в валюте а курс к рублю редактировать каждый день не интересно). Соответственно, ориентироваться при покупке надо именно на эту цену, а по соседству с ней, для удобства, желательно иметь цену в рублях, но она может немного отклоняться от текущего курса и показывается ориентировочно а не в качестве конечной цены, т.к. всё относительно - обменный курс, комиссия за перевод, доп.услуги за рубежом и т.п., что в итоге изменит рублёвую цену на неопеределенное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да.

http://inostrannik.ru/r-estate/

Вот на этом сайте как раз сделан вывод цены во всех валютах, которые зарегистрированы в Менеджере валют. Чуть изменить код и можно будет выводить только в одной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

написал не в тему...

 

Перенес сюда

Изменено пользователем Игорь Иваныч

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да.

http://inostrannik.ru/r-estate/

Вот на этом сайте как раз сделан вывод цены во всех валютах, которые зарегистрированы в Менеджере валют. Чуть изменить код и можно будет выводить только в одной.

Или я дурак... или лыжи не едут... ничего не понял... может кто-нить объяснит простым языком как этого добиться???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Или я дурак... или лыжи не едут... ничего не понял... может кто-нить объяснит простым языком как этого добиться???

Если как тут объяснено не помогает

http://www.etown.ru/s/topic/1742-%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B0%D0%BB%D1%8E%D1%82/#entry18682

Тогда пишите в раздел фриланс, там вам сделают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 19.03.2015 в 14:47, abushyk сказал:

Таки не сегодня)))

 

Немного теории. При включенном менеджере валют в сетке всегда доступно дополнительное значение для поля price. Называется оно price_ue и содержит в себе приведенное к валюте, обозначенной дефолтной в менеджере валют, значение.

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

 

Это не скорую руку.

 

На не скорую руку:

1. Для начала необходимо загнать в шаблон валюты и их курсы. Делается это в контроллере шаблонов (/template/frontend/шаблон/main/main.php). Логично сделать это максимально повыше в main(), где-то сразу после global $__site_title, $folder, $smarty;


if(!isset($_SESSION['site_cache']['courses'])){$DBC=DBC::getInstance();$query='SELECT * FROM '.DB_PREFIX.'_currency';$stmt=$DBC->query($query);if($stmt){while($ar=$DBC->fetch($stmt)){$courses[$ar['currency_id']]=$ar;}}$_SESSION['site_cache']['courses']=$courses;}$this->template->assign('_courses', $_SESSION['site_cache']['courses']);

Можно обойтись и без сохранения в сессию, а предусмотреть другой вариант, например создавать готовый файл с php-массивом и при наличии оного просто инклудить. Но это уже тонкости. Главное, что количество запросов на получение списка валют мы снизим.

 

2. Теперь в шаблоне у нас есть массив валют-курсов доступный в {$_courses} и предоставляющий доступ к валюте по ее ид. Запросив {$_courses[4]} мы получим данные валюты с ид=4.

 

3. Как пользоваться.


{if (int)$grid_items[i].price!=0}{foreach from=$_courses item=_course}<br>{$_course.code}: {(($grid_items[i].price*$_courses[$grid_items[i].currency_id].course)/($_course.course))|number_format:0:",":" "}{/foreach}{/if}

Данный кусочек проверяет не нулевое ли значение цены и потом проходится по массиву валют, выводя цену объекта во всех зарегистрированных валютах сайта.

 

Если нужно выдать в какой-то конкретной валюте (c ид=4 например) и она не является дефолтной


{if (int)$grid_items[i].price!=0}{(($grid_items[i].price*$_courses[$grid_items[i].currency_id].course)/($_courses[4].course))|number_format:0:",":" "}{/if}

4. В карточке все абсолютно аналогично, за исключением того, что значения currency_id и price необходимо получать как currency_id.value и price.value ({$data.currency_id.value}, {$data.price.value}) того, что понятия приведенной цены и самой price_ue в данных в карточке не существует. Все остальные процедуры одинаковы.

Константин я вот читаю уже 20 раз. Подскажите пожалуйста. я сделала вот эти валюты в менеджере валют:

http://joxi.ru/V2VDglWs0g5Xkr

 дальше мне какой код нужно прописать чтобы они на сайт выводились только не все сразу а переключались

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас