Я сделал следующим образом - добавил функцию в файле function.php:
# Get_content
function get_content() {
$datedollar = date("d/m/Y",time()+36000);
$linkdollar = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$datedollar";
$fd = fopen($linkdollar, "r");
$text="";if (!$fd)$content .= "Проблемка";
else {while (!feof ($fd)) $text .= fgets($fd, 4096);}fclose ($fd);return $text;
}
где +36000 - смещение пересчёта курса по времени, у меня смена курса на следующий день происходит в 3 часа предыдущего дня.
и в модуле shop везде где нужен пересчёт добавил:
$acontent .= get_content();
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $acontent, $out, PREG_SET_ORDER);$dollar = "";$euro = "";
foreach($out as $cur){if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);}
$dollar = round($dollar, 2);
$euro = round($euro, 2);
дальше немного криво сделал: проверяю cid и умножаю цену в базе на курс валюты в которой у меня цены на эту категорию товара, например:
if ($product_cid == 48) {
$preisis = $product_preis * $euro;
$preisis = round($preisis, -1);
} elseif ($product_cid == 45) {
$preisis = $product_preis;
$preisis = round($preisis, -1);
} else {
$preisis = $product_preis * $dollar;
$preisis = round($preisis, -1);
}
т.е. цены в админке у категории 48 в евро, у 45 - в рублях, а в остальных категориях в долларах. На сайте все цены отображаются в рублях по курсу ЦБ. Очень удобно, т.к. товаров в модуле несколько сотен позиций.
Версия системы: SLAED CMS 4.* Pro
Версия PHP: PHP 5
Сервер: Сервер в интернете