Привет форумчане!
Хотел бы помощи в таком вопросе: основная валюта в инет магазине - гривна. Клиент желает при создании товара писать цену в доларах, а чтобы цена для пользователей отображалась по текущему курсу НБУ в гривнах.
Может быть на форуме есть уже ответ, я не нашел (точнее, наверное, не знал как правильно искать).
Инет магазин работает на системе drushop 2.2 (drupal 6.25).
Если есть решение, буду благодарен.
Комментарии
Я так понял, что таких проблем\вопросов ни у кого не возникало?
Всегда, или в одних товарах гривны, а в других доллары?
Если всегда доллары, то можно при загрузке ноды товара делать пересчет и в цену писать уже вычисленное значение. Смотри в сторону
hook_nodeapi()
.Если нет, то тогда нужно как-то отличать в какой валюте указана цена, например использовать Money, а затем первая схема.
И надо где-то еще хранить курс, но его можно просто в переменной хранить и обновлять по крону.
Нужно чтоб он писал цену в админке в доларах для всех товаров, а модуль умножал на курс гривны и выводил гривну.
Готовый модуль нашел здесь от пользователя sv2109, все умножается хорошо.
Сделал так:попробовал подключить модуль (в валютах в магазине ничего не менял - так и гривна, просто админ пишет свою цену, а модуль умножает его на курс = итого должна быть коректная цена товара). В модуле в фунции, которая уже делает умножение
<?phpfunction uc_multi_currency_price_handler_alter(&$price, &$context, &$options) {
if ($context['subject']['node']->field_currency[0]['value'] == "usd") {
$price['price'] *= variable_get('currency_rate', 8);
}
}?>
убрал цикл if, чтоб скрипт выполнялся без ошибок, так как валюта сайта одна - оставил просто умножение.
Но возникла следующая проблема: когда товар добавляется в корзину - цена товара умжножается дважды на курс. Предполагаю, что проблема в том, что умножаю не на ту переменную. метод перебора переменных с ценами также не помог. с пхп, как уже понятно, не очень дружу.
Кстати, вот весь скрипт модуля
<?php
$form['currency_rate'] = array(
$form['submit'] = array(
// $Id$
/**
* @file
* allow 2 base currency for products
*/
/**
function uc_multi_currency_menu() {* Implementation of hook_menu().
*/
$items['admin/content/multi_currency'] = array(
'title' => 'Курс валюти',
'description' => 'Ручна зміна курсу валюти',
'page callback' => 'drupal_get_form',
'page arguments' => array('uc_multi_currency_form'),
'access callback' => 'user_access',
'access arguments' => array('change currency'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
} /**
* Implementation of hook_perm().
*/
function uc_multi_currency_perm() {
return array('change currency');
} /**
* Define the form.
*/ function uc_multi_currency_form($form_state) {
'#type' => 'textfield',
'#title' => t('Курс валюти'),
'#default_value' => variable_get('currency_rate', 7.9),
'#description' => t('Дійсний курс для долара США.')
);
'#type' => 'submit',
'#value' => t('Встановити'),
);
return $form;
} /**
* Handle submission of the form and saving
* of the data to the database.
*/ function uc_multi_currency_form_submit($form, $form_state) {
$currency_rate = $form_state['values']['currency_rate'];
variable_set('currency_rate', $currency_rate);
} /**
* Implementation of hook_uc_price_handler().
*/
function uc_multi_currency_uc_price_handler() {
return array(
'alter' => array(
'title' => t('Мульти валюта'),
'description' => t('Изменение цены товара в зависимости от валюты'),
'callback' => 'uc_multi_currency_price_handler_alter',
),
);
} /**
* Изменение цены товара в зависимости от валюты
*
*/
function uc_multi_currency_price_handler_alter(&$price, &$context, &$options) {
if ($context['subject']['node']->field_currency[0]['value'] == "usd") {
$price['price'] *= variable_get('currency_rate', 8);
}
}?>
Помогите пожалуйста разобратся. Спасибо.
никто не знает\не хочет указать в чем ошибка?