Категории
[FAQ] Часто задаваемые вопросы и ответы
Проблемы и решения
Ошибки и исправления
Общие вопросы
Расширения
Установка и обновление
Модули
Шаблоны
Локализация интерфейса
Коммерческие предложения
Учимся бизнесу
Бизнес книги
Поисковая оптимизация (SEO)
Магазины на ShopOS
Хостинг для ShopOS
Предложения и пожелания
Курилка
|
Обновление курса валют
Добрый день! Обновляю курс валют, как вручную так и через скрипт, все обновляется - но в магазине при изминении валюты курс остается месячной давности. Валюта по умолчанию - евро, курс евро к гривне 10.2, что прописано в настройках валюты, а магазин считает по 10.00 Заранее благодарен за ответ!
кэш почистить
Это я сделал первым делом, потом зашел по ftp на сайт и удалил весь кэш - не помогло :(
Если кому нужно, то вот парсер для Национального Банка Республики Казахстан:
// BOF NBRK // Синхронизация курса валют с текущим курсом Национального банка РК // http://www.nationalbank.kz/rss/rates_all.xml function quote_nbrk_currency($code, $base = DEFAULT_CURRENCY) { static $rateCacheNBRK = false;
if (!$rateCacheNBRK) { $rateCacheNBRK = array(); $rateCacheNBRK['KZT'] = 1;
$url = 'http://www.nationalbank.kz/rss/rates_all.xml'; $data = ''; // check via file() ... may fail if php file Wrapper disabled. $page = @file($url . '?' . $data); if (!is_array($page) && function_exists('curl_init')) { // check via cURL instead. May fail if proxy not set, esp with GoDaddy. $page = doCurlCurrencyRequest('GET', $url, $data) ; $page = explode("\n", $page); } if (is_array($page) || $page != '') { $page = implode('', $page); preg_match_all("|<title>(.*?)</title>|is", $page, $Title); preg_match_all("|<description>(.*?)</description>|is", $page, $Description); preg_match_all("|<quant>(.*?)</quant>|is", $page, $Quant); // echo '<pre>';var_export($Title);echo '<pre>'; // echo '<pre>';var_export($Description);echo '<pre>'; // echo '<pre>';var_export($Quant);echo '<pre>'; for($i=0, $n=sizeof($Quant); $i<$n; $i++) { // echo $Title . ' ' . $Description . ' ' . $Quant . ' ' . $Description/$Quant . '<br />'; $rateCacheNBRK] = $Description/$Quant; } // echo '<pre>';var_export($rateCacheNBRK);echo '<pre>'; // die; } } // echo '<pre>';var_dump($code, isset($rateCacheNBRK), $base, isset($rateCacheNBRK));echo '<pre>'; if (isset($rateCacheNBRK) && isset($rateCacheNBRK)) { $rate = round($rateCacheNBRK/$rateCacheNBRK,8); return (string)$rate; } else { return false; } } // EOF NBRK
помещаем его в файл admin/includes/functions/localization.php после строчки
// EOF CBR
в файле admin/includes/top.php находим строчку:
define('CURRENCY_SERVER_PRIMARY', 'cbr');
и меняем её на
define('CURRENCY_SERVER_PRIMARY', 'nbrk');
и немного косметики - в файле admin/currencies.php находим строчки:
$server_used = CURRENCY_SERVER_PRIMARY;
и
$server_used =CURRENCY_SERVER_BACKUP;
и меняем их соответственно на:
$server_used = strtoupper(CURRENCY_SERVER_PRIMARY);
и
$server_used = strtoupper(CURRENCY_SERVER_BACKUP);
находим
$_price = @number_format($currency['value'], $currency['decimal_places']);
и меняем на
$_price = @number_format($currency['value'], 4, ',', ' ');
Теперь курсы будут грузиться с http://www.nationalbank.kz/rss/rates_all.xml и сообщения об успешном обновлении курса будут использовать заглавные буквы для аббревиатуры источника. А также в качестве десятичного знака используется запятая, а разделитель тысяч - пробел и величина валюты будет даваться до четырех знаков после запятой.
Вдогонку. Чтобы убрать нелепое сообщение, что курс валюты установленной по умолчанию (который всегда равен 1.00000000) обновлен, меняем в admin/currencies.php
$messageStack->add_session(sprintf(TEXT_INFO_CURRENCY_UPDATED, $currency['title'], $currency['code'], $server_used), 'success');
на
if ($currency['code'] !== DEFAULT_CURRENCY) { $messageStack->add_session(sprintf(TEXT_INFO_CURRENCY_UPDATED, $currency['title'], $currency['code'], $server_used), 'success'); }
спасибо. надо как то в виде расширения сделать
Источник
|