Мультивалютность в Virtuemart очень странный предмет – вот она есть, но глючит по страшному
Итак, что же это такое, с чем его едят и как заставить ее работать украинских условиях ниже.
По словам разработчиков, Virtuemart мультивалютен. На самом деле, вся мультивалютность сводится к конвертации из любой указанной в цене товара валюты в основную валюту интернет магазина. Работает это следующим образом: в настройках магазина указывается основная валюта (в моем случае, украинская гривна), заполняется справочник валют и в дальнейшем любую указанную в справочнике валюту можно использовать, то есть указывать в качестве валюты цены товара. В случае, если валюта используется, Virtuemart “на лету” преобразует ее в указанную основную валюту, даже не упоминая о том, что перевод выполнен. Для преобразования используется файл /administrator/components/com_virtuemart/classes/currency/convertECB.php, который получает данные о курсе валют из XML файла, ежедневно предоставляемого European Central Bank. Сам файл может быть найден здесь. После получения файла встроенный конвертер Virtuemart его кэширует и кладет в /cache/daily.xml и в дальнейшем курсы берет оттуда, обновляя его один раз в сутки.
Только тут есть, как всегда, грабли… ну не знает европейский центральный банк такой валюты как украинская гривна (UAH)
Следовательно, для того, чтобы модуль перевода работал у нас есть 3 пути:
- Найти XML файл банка, который знает, что собственно такое есть украинская валюта. Такой файлик, например, можно найти здесь.
- Использовать текущий механизм для установки курса валют из админки и не возиться со всевозможными экспортами-импортами.
- Написать свой конвертер, в котором прописать курсы валют.
Столкнувшись в одном из проектов с этой проблемой, было принято решение сделать гибрид: используется встроенный механизм марта (лежит в файле convertECB.php), но берет данные он не из интернета, а из локального XML файла eurofxref-daily.xml, расположенного в корне сайта. Встроенный механизм Virtuemart кэширует его в /cache/daily.xml, который после каждого обновления основного файла необходимо удалять. Изменение курсов производится путем ручного исправления оригинального файла или из специально разработанного модуля админки Joomla. Модуль представляет собой набор PHP скриптов, не зарегистрированных никоим образом в Joomla, а лежащих в отдельной папке в /administrator/components/<любая-папка>, которые вызываются нажатием на кнопку «Управление курсами валют» и открываются в диалоговом окне Highslide.
Реализовать такое решение можно следующим образом:
1. Изменить файл – convertECB.php.
Главное изменить строки (привести к следующему виду):
var $document_address = 'http://<URL>/eurofxref-daily.xml';
var $info_address = 'http://<URL>/';
Уже измененный файл можно скачать здесь.
Файл лежит в /administrator/components/com_virtuemart/classes/currency/convertECB.php
Этим изменением мы заставляем Virtuemart брать данные из локального файла на нашем сервере.
2. Скачать файл с валютами здесь. Файл рассчитан на 3 валюты: гривны, доллары США и евро. В случае необходимости их будет не трудно добавить
3. В файле /administrator/components/com_virtuemart/html/admin.curr_list.php после всего текста вставить:
<br /><br />
<table style="border:1px solid #e7e7e7; cursor:pointer;">
<tr>
<td style="background-color:#f9f9f9;">
<img src="/administrator/images/edit_currrate.png" /></td>
<td valign="middle" style="vertical-align:middle;background-color:
#f9f9f9;">
<a onclick="return hs.htmlExpand(this, { objectType: 'ajax',
headingText: 'Управление курсами валют'} )" href="/administrator/
components/<папка>/index.php" >Управление курсами валют</a>
</td>
</tr>
</table>
При этом в шаблон админки Joomla должен быть вставлен код, реализующий открытий Highslide окон, иначе нужный интерфейс будет открыт просто в том же окне, что есть некрасиво.
Как выглядит вышеприведенный код можно посмотреть выше.
4. Создать папку в /administrator/components/ и создать в ней следующие файлы: index.php, setrates.php, deltemp.php. Рабочее содержимое этих файлов будет приведено ниже. Файлы отвечают за отображение формы редактирования, сохранение данных и удаление временного закэшированного файла соответственно.
Index.php – форма редактирования курсов валют
setrates.php – скрипт установки введенных значений и очистки закешированного содержимого
deltemp.php – скрипт безусловной очистки кешированного содержимого
Внимание! Не используйте вышеприведенные файлы в «чистом» виде, поскольку они служат только для демонстрационных целей!! Для безопасной работы в эти файлы необходимо добавить также функции по распределению полномочий и ограничению несанкционированного доступа Joomla.
Оказавшие помощь ресурсы:
• http://phpclub.ru/faq/PHP5/XML
• http://joomlaforum.ru/index.php?topic=26078.90
• http://joomlaforum.ru/index.php/topic,26078.0.html
• http://help.mamboserver.com/index.php?option=com_content&task=view&id=377&Itemid=64
UPD.: включил новую систему проверки комментов, посмотрим как работать будет:) прошу отписываться, господа
UPD. 2.: После недели тестирования решения на реальном инет-магазине, обнаружился следующий глюк: после первого изменения основной валюты инет-магазина в настройках Virtuemart, символьное обозначение валюты (напр., «грн.») перестает выводиться вообще
Кроме того, цены округляются (хотя в настройках установлено отображать 2 знака после запятой)… Посколько инет-магазин уже работает, пришлось срочно решать эту задачу…
После некоторого количества чесания репы (
) было обнаружено что форматирование даты выполняется в файле /administrator/components/com_virtuemart/classes/currency/class_currency_display.php
Не мучаясь лукаво, предлагаю следующее решение:
1. закомментировать строки с 259 по 445 (форматирование суммы и обработка отрицательных сумм по образцу, установленному в настройках);
2. В строке 447 вставить:
$res = round($nb,2);
3. Строку 455 привести к виду:
$res = $res." грн.";
После этих изменений все начинает работать правильно.
UPD. 3.: В последнее время участились жалобы на то, что невозможно скачать мой вариант XML файла с валютами. На самом деле собственно скачивание выполняется без проблем, просто браузер не может его пропарсить. Поэтому для сохранения XML файла необходимо выбрать эту ссылку и выбрать пункт меню «Сохранить объект как…» либо скачать этот же файл в .RAR архиве здесь.
UPD. 4. 24 октября 2009 года разработана новая версия хака, реализующего мультивалютность. Более подробное его описание можно найти здесь, а по вопросам консультаций по работе, приобретения и установки обращайтесь сюда, или пишите по ICQ – 286-658-375 – или на e-mail: alex_krylov@inbox.ru

Авторизация




всё, разобрался
[Ответить]
Кто нибудь знает как поменять вывод названия UAH на Грн.
Если по умолчанию валюта в магазине доллары.
Спасибо
[Ответить]
UAH – хранится в таблице валют виртуамарта как код гривны. Соответственно нужно отредактировать таблицу в базе данных. Только я бы настоятельно рекомендовал проверять на локалхосте, никак не на рабочем сайте
[Ответить]
Я пробовал менять на Грн. но тогда цена остаеться долларов а надпись меняеться на Грн. Ставлю UAH все работает.
[Ответить]
Кто то может помочь реализовать вывод сразу трех цен в разных валютах в поле цена?
Тройная мультивалютность =)
К кому я могу обратиться с коммерческим предложением?
[Ответить]
p.s. Я плачу за этот модуль и потом можно будет его выложить бесплатно в сеть.
[Ответить]
такое расширение реализовано, лежит http://gelos.org.ua/%d1%80%d0%b0%d1%81%d1%88%d0%b8%d1%80%d0%b5%d0%bd%d0%b8%d1%8f-virtuemart/pricethrough
обратиться можете alex_krylov@inbox.ru или ICQ 286658375
[Ответить]
Круто, спасибо =) Обращюсь
[Ответить]
Так никто и не ответил по поводу Вывода названия цены. Неужели ни кто не сталкивался с этой проблемой?
[Ответить]
не сталкивались:) если предложенный вариант не работает, наверное придется лезть в код
[Ответить]
Привет! Такой вопрос имеется к вам… Очень хочется создать на своём сайте опросник в боковой колоночке . Ну чтобы пользователи выбирали один из вариантов ответов, и далее отображалась статискика голосования. Интересно, это реально как-то сделать на ВордПрессе??? Скажу честно, во всяких там скриптах и кодах не силён, хотелось бы какой-нибудь плагин. В поиске смог найти только нерусифицированные, боюсь что не смогу разобраться.
Друзья, что посоветуете????
[Ответить]
Помогите пожалуйста!! Что делать!
На виртуальном хостинге сделал… всё работало..
После переноса на реальный когда выбираешь доллары выдает такую ошибку!
Warning: fopen(http://www:80/eurofxref-daily.xml) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /usr/home/eksploveld/data/www/mobilizacia.kiev.ua/administrator/components/com_virtuemart/classes/connectionTools.class.php on line 177
Ошибка: Possible server error! – ()
Ошибка: Failed to retrieve the Currency Converter XML document.
[Ответить]
Сайт http://mobilizacia.kiev.ua
[Ответить]
fopen(http://www:80/eurofxref-daily.xml)
судя по ошибке, у вас не указан либо неверно указан адрес сайта
[Ответить]
Один человек помог реализовать вывод трех разновалютных цен на товар.
Оформили так: http://avatara.kiev.ua/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=1170&category_id=64&option=com_virtuemart&Itemid=227
[Ответить]
Супер! Делись инфой с ближними своими)
[Ответить]
Здравствуйте.
Не получается подключить highslide библиотеку.
Скачал архив с http://highslide.com/ залил его в administrator\templates\khepri (пробовал его и в корень кидать)
В administrator\templates\khepri\index.php перед тегом
вставил код, который указан в мануале на сайте highslide.com:
Заранее спасибо
// override Highslide settings here
// instead of editing the highslide.js file
hs.graphicsDir = ‘/highslide/graphics/’;
И все равно не пашет это окно, подскажите, что делаю не так
[Ответить]
Вот полный скрипт (добавил пробелы, чтобы отобразился полностью)
hs.graphicsDir = ‘ /highslide / graphics / ‘;
[Ответить]
Блин…сорри за флуд…никак не хочет отображаться в комментах из-за функций…Имел ввиду скрипт, показанный на сайте http://highslide.com/ на шаге 2
[Ответить]
В хайслайде есть следующая особенность. Даже если вы хотите выводить им диалоговые кона и показ графики вас не интересует, настройка
hs.graphicsDir = ‘ /highslide / graphics / ‘;
должна указывать на существующую и доступную для записи папку. Пожалуйста, для начала убедитесь что это так.
[Ответить]
Спасибо…проблему решил
[Ответить]
Как вывести две цены: до конвертации и после? Какая переменная отвечает за цену до конвертации, чтоб ей в флайпейдж вставить?
[Ответить]
Все преобразования производятся в administrator\components\com_virtuemart\classes\currency\convertECB.php – там можно найти все необходимые переменные
Но корректнее мультивалютность (в частности и две альтернативные цены) реализуется расширением priceInfo http://kdt.biz.ua/joomla-virtuemart-extensions
[Ответить]
Установил скрипты, изменил все файлы как было описано в статье, проверил права доступа, но когда жму «Управление курсами валют» получаю пустую страницу.
Скажите пожалуйста в чем может быть проблема?
[Ответить]
Прежде всего проверьте логи ошибок, без них сказать что нибудь довольно сложно. Если не получится разобраться – стукните в icq 286658375, постараюсь помочь
[Ответить]
Сделал все, как в инструкции…
появился трабл…
Меняю на сайте валюту…
отображаеться только в гривне…
в долларе и евро нет отображается..
поскажите, пожалуйста, в чем может быть проблема?!
http://www.rosa.kiev.ua
[Ответить]
Здравствуйте,
я по поводу бесплатного хака «мультивалютность», сказать, что сделано все в точности – ничего не сказать, но результат таков:
-ни под каким соусом не получается изменить местоположение знака валюты, относительно стоимости (с 00 simb на simb 00)
-при стоимости товара скажем в USD866, в гривне он становится в UAH109, а в евро EUR1167
-фрагмент кода из eurofxref-daily.xml:
‘UAH’ rate=’1′
‘USD’ rate=’7.93′
‘EUR’ rate=’10.69′
-ну и последнее, Highslide еще не подключал, но в отдельно открывающемся окне, красуется абракадабра (которая я так понимаю, исчезнет с появлением Highslide, так как привяжется к странице с кодировкой utf-8), но вот как быть с остальным?
Спасайте, тону!!!
Хотелось бы получить более-менее, раскрытый ответ, ибо, по сути, я больше дизайнер, нежели кодер.
Заранее благодарен.
[Ответить]
1. А что значит не под каким соусом?
это стандартная настройка виртмарт и находится она в разделе настроек. Если вы ставите другое значение, но оно не сохраняется – значит у вас траблы с правами на папки и файлы. Хотя, с другой стороны, в данном расширении особой привязки к формату валюты нет – это скорее косметика
2. Зайдите в administrator\components\com_virtuemart\classes\currency\convertECB.php и попробуйте повыводить промежуточные значения пересчета – вся работа по расчету проходит именно там. Поскольку цены уже меняются, чтение из xml можно не проверять.
3. по поводу кодировок. Такое может быть связано с кодировкой самого файла – ansi вместо utf8. Но это особенность хайслайда, который выводит окно установки валют в плавающем фрейме. Вы можете либо изменить кодировки самих админ скриптов на utf8 without bom, либо обращаться к скриптам черех хайслайд.
[Ответить]
Со всем разобрался, но вот незадача с изменением местоположения знака валюты. Выставляю в настройках и так и так, ну не меняется и все. Вирт 1.1.4, ставил с нуля, без всяких квикстартов. В чем может крыться причина глюка? Если дело в правах, Денвер+Винда, какие там права, но даже если в них, какой хоть файл глянуть на предмет изменения прав?
Спасибо.
[Ответить]
с местоположением или просто символом валюты? если с местоположением-все настраивается в стандартных шаблонах виртмарта, если с символом траблы – то придется в код лезть
[Ответить]
Подскажите пжлст что за ошибки http://premier-produkt.ru/error.png На денвере все оч хорошо работает без ошибок… а тут… чего то я всю голову сломал!
[Ответить]
я тож бился над проблемой… хотел поменять местами выводимую сумму и валюту расчетов.. забил )
[Ответить]
Сделал все по инструкции, но нажатии на Управление курсами валют Вылазит белая страница с крякозяблами типа Warning: DOMDocument::load(http://localhost/magaz/eurofxref-daily.xml) [function.DOMDocument-load]: failed to open stream: ���� ����������. in localhost\administrator\components\com_vmcurr\index.php on line 11
Что это может быть?
[Ответить]
С проблемой в предыдущем посте разобрался. Но окно не всплывает, а просто открывается. Код вставил в админпанель.Может я его не туда вставил?
[Ответить]
Спасибо все работает.
В админ панели вылазит ошибка Warning: DOMDocument::load() [domdocument.load]: xmlns:gesmes: Empty XML namespace is not allowed in http://ellebags.od.ua/eurofxref-daily.xml, line: 3 in /home/virtwww/w_ellebags-od-ua_c301af10/http/administrator/components/converter/index.php on line 11
Подскажите как исправить
[Ответить]
нужно проверить структуру XML файла с валютами.
А в каком именно месте админки появляется сообщение?
[Ответить]
Все установилось, но, я так понимаю, в xml-файл нужно подставлять обратный курс, т.е. не 8 грн, а 1/8=0,125. Так ли это, или я что то напутал? Спасибо.
[Ответить]
нет. в xml файле валют указаны курсы по отношению к гривне
[Ответить]
нужно проверить структуру XML файла с валютами.
А в каком именно месте админки появляется сообщение?
Управление курсами валют
[Ответить]
прежде всего нужно проверить правильность подключения файла, затем – его структуру. Если функционал работает как ожидалось можно и вовсе сообщение об ошибке игнорировать.
[Ответить]
Игнорировать не получается когда админка (простой вид) работает всплывающее окно там только сообщение об ошибке ругается на xml файл эти строки
Reference rates
В админке (расширеный вид) управление курсами ошибки а потом рабочий хак
Спасибо за внимание и ХАК
[Ответить]
Проблемы с highslide JS. Никак не хочет окошко всплывать, открывается в окне отдельно, вроде всё сделал по инструкции, папка highslide лежит в корне сайта с правами 777,в шаблоне админки вставил соответствующий код…хз. А где его именно нужно вставлять? может это влияет? Можно поподробнее про установку Highslide JS на джумлу ?
[Ответить]
да, собственно, нечего сложного в установке нет. Достаточно прописать библиотеку в секции
… шаблона админки и внимательно смотреть консоль ошибок[Ответить]
Угу, ну очень доступно….
[Ответить]