Категории

[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');
          }


спасибо. надо как то в виде расширения сделать


Источник



Copyright ShopOS