Ubercart + drupal 6.
Есть практически готовый интернет магазин.
Базовая единица - доллар, $.
Все цены соответственно указаны в долларах.
Нужно ввести понятие курса, который можно менять.
Курс нужен для вывода второй цены, в грн., которая будет расчитываться автоматически.
Например:
Ноутбук Asus F3KA
Цена: 100$ (628 грн).
Обязательно, вторая цена должна расчитываться автоматически, так как курс меняется часто, возможно несколько раз в день.
Подскажите, есть модуль, который можно взять за основу. Думаю, что данная проблема уже неоднократно поднималась.
Комментарии
Модуль придется писать самому, поскольку Вам необходимо брать данные о курсе с какого нибудь банковского сайта.
Как хранить эти данные вы решили? в какой валюте будет вестись учет? Какими платежными методами сможет пользоваться покупатель?
Исходя из этого уже надо думать о модуле, ведь если Вам нужно только показывать цену в гривне, берете xml с любого бесплатно отдающего сайта украинского банка, поскольку не все банки отдают курсы валют бесплатно, загоняете курс в глобальную переменную и все, дальше на nodeapi добавляете в объект $node свою переменную $node->uah и в нее будет писаться значение: $node->uah = $node->sell_price * $kurs. если преследуются другие цели, то см. выше.
Если курс уже есть, можно обойтись только функцией темизации в шаблоне темы.
Но дербанить курс из банков - писать свой модуль. Слишком они разные эти форматы на банколвских сайтах.
Все зависит от задач. Иногда необходимо отображать более менее оперативную информацию и тут уж без парсинга никуды )))
Нужно темизировать разные вещи.
1. Темизация страницы ноды (самого товара) - просто.
2. Темизация страницы каталога (Сделано через Views) - немного сложней.
3. Темизация корзины - спорный вопрос, также думаю, что не оч. слонжо.
4. Темизация внутренней системы хранения заказов - вот тут я еще не разбирался.
Фактически везде, где есть цена, нужно изменять функции темизации.
Что Вы понимаете под понятием темизации внутренней системы хранения заказов.
Хранить данные о заказах все равно придется в одной валюте, в противном случае возникнет путанка в отчетах - гарантировано.
Если ты темизируешь вывод одного поля, то достаточно одной функции: и views, и вывод страницы каталога будут использовать ее.
В том самом месте, где ты указываешь как выводить поле на вкладке Display fields или в настройках представлений, ты задаешь функцию типа theme_kakoe_to_pole_formatter. Перехватив её вывод в файле template.php ты изменяешь её во всех случаях.
Это что, еще один пробел в Уберкарте? в любом оскоммерсе это встроено, а здесь нужно писать модуль... То, что я видел у буржуев привязано к стране, тянет обновления с курсовых сайтов и не работает так просто как надо..
Или все-же есть готовое решение для простого вывода валюты, которую покупатель может выбрать из списка, и чтоб администратор мог выставить курс в админке ?
fixit: если вам нужно готовое,лёгкое решение для торговли в интернете - бегите от друпала и уберкарта как чёрт от ладана. Я серьёзно.
Или готовьте бабло/время. Драпал - это не бесплатное решение.
я например хочу ввести валюту в тенге, что бы долларовая не отображалась а шла только тенговая валюта (KZT) помосчь есть, не?
Вот сдал недавно www.afkart.ru Ubercart+Drupal 6. Очевидное рядом.
Курсы тянете откуда-то или ручками?
+ откройте завесу тайны при платеже он-лайн в какой валюте люди платят?
Сайт неплох. Как насчёт поделиться рецептом? Отписать в Друпалогию например или сюда
subs
Так получилось, что для навигации писал свой модуль.
Немного позже была поставлена задача, добавить конвертацию.
1. Основные цены в евро и оплата в евро.
2. Для хранения и изменения курса используется variable_get и variable_set, соответственно таблица variable.
Для ручного изменения курса добавил MENU_LOCAL_TASK страницу.
Crontab запускает wget файла php, который с адреса (как видно в параметрах дата):
берет значение и ставит его. Поройтесь на сайте РБК там валют туева хуча.
3. Предупреждая вопросы о файле.php
Поместите две строчки в начале пустого php файла:
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
И после них будет доступно все окружение Друпал. Я использовал полную загрузку системы, ввиду нескольких дополнительных задач.
4. Вывод цен. Валюта хранится в куках у юзера. Я считаю расточительством держать это в базе, когда каждый запрос на счету.
Для вывода используется своя функция-обертка. Тупо, где вывод цены, стоит функция с параметром цены из базы (евро). Функция берет куки, если надо конвертировать берет значение из variable.
Поделюсь и я своим опытом.
Все когда-то подробно расписал у себя в блоге - http://dovbysh.com/ru/blogs/kodo/dengi-na-drupale
Использую модуль Money CCK field
Посмотреть в работе можно http://knife-life.jp/ru/shop/master/rockstead
Основной смысл - дать возможность пользователям оценить стоимость товара в удобной для них валюте. В примере я убрал все экзотические валюты, оставил только валюты для потенциальных клиентов.
Основной минус - базовая валюта - иены, и счет будет выстален в иенах, соответственно курс валют Яхо не будет совпадать с курсом ПайПала + (если не ошибаюсь)% за перевод валюты.
Да, используя модуль можно и сразу вывести несколько валют по товару - в моем случае этого не надо.
Значит, как говорится воз и ныне там. Тогда ТС вам нужен мини модуль с всего лишь 1 переменной для курса валют которую можно задавать либо руками в админке, либо тащить из какого-то внешнего ресурса, а дальше просто в шаблоне вывода $node->price * vafiable_get('kurs', 29);
либо на лету (динамически в зависимости от даты и времени) создавать http запрос на РБК, распарсивать значение, писать его в static и тут-же умножать $node->price на это значение. во втором варианте в админку вообще лазить не придется главное чтоб сайт РБК не упал
Сколько будет стоить написание модуля, чтобы в админке ручками вводился курс доллара, а для пользователей была видна цена всех товаров в рублях?
А в ордера какую цену писать?
А оплачивать покупку пользователь должен в какой валюте?
Нужно ли хранить цену проданного товара в долларах?
Нужно ли хранить курс на момент продажи?
Вот как-бы несколько первых составляющих для оценки работы.
ЗЫ. контакты в профиле пишите попробуем пообщаться.
Если сайт РБК упадет,то функция variable_get('kurs', 29); как раз содержит дефолтное значения для подстраховки.
А парсится вывод сайта РБК $rbk=explode("|",$переменная); А переменная $rbk[5] будет равна курсу.
Ловите, может кому сгодится...
Очень актуальная тема для меня в данный момент....
Может нашлось решение?
Sywooch
Огромный респект...
Sywooch, большое спасибо за модуль (uc_alt_price.zip), но ...
Он выводит вторую цену только в каталоге товаров! А как допилить, чтоб и в самом товаре тоже выводилась 2-я цена ?!?!?
Копался-копался понять не могу.
Сборка OpenStore.
Ура, решил!
Заменил строки в файле preprocess_common.inc модуля general: sites\all\modules\general\preprocess\preprocess_common.inc !!!
920 и 931 строка.
920 $vars['show_cat_product_price'] = '
931 $vars['show_cat_product_price'] = '
';
Вывелтв в node-product-left-right.tpl.php. темы.
18 строка.
<?php print $show_cat_product_price; ?>
Может кому и пригодится. Пока работает отлично !
А без препроцесса ?
sight писал Вам в личку, продублирую сюда. Может кому поможет.
Вставлять куда хочется )))
<?php print uc_alt_price_format($node->sell_price);?>
мой вариант
$valute = variable_get('uc_currency_sign');
$round = variable_get('uc_currency_prec', 0);
return round($price,$round).$valute;
}
Ну, ваще потрясно!)
Забираю..
Есть ли решения для 3его ubercart'a?
кто поможет для 3его ubercart?