reddyk 01 декабря 2014 0 1
Есть сайт на modx вот точно незнаю revo или evo, но возник такой вопрос: там есть маленький каталог и хочу сделать так чтобы курс доллара брался с цб или откуда нибудь с внешнего ресурса, т.к. цены на товары там в долларах, и исходя с этого возникает еще один вопрос, как сделать чтобы цены в рублях не показывали копейки типо 5189 рублей 55 копеек, а просто 5189 или 5190 руб.
1 комментарий
Fi1osof1
Fi1osof 01 декабря 2014г в 23:15 #
Ну, во-первых, все-таки надо разобраться Эво или Рево у вас.
Во-вторых, судя по всему, эта задача опять-таки уровнем для вас слишком сложная, так как незнание как изменить что-то в шаблонизации и межсерверное взаимодействие - это примерно как не уметь еще на трехколесном велосипеде кататься, но уже хотеть управлять истрибителем.
Но чтобы вы не говорили, что мы просто отговорки здесь лепим и не хотим помогать, приведу вам реальный код, который дергает курсы с ЦБР и обновляет их на сайте. Сможете под себя адаптировать - круто. Не сможете - просите специалистов за деньги помочь, и это вопрос не менее 1000 рублей (зависит еще от структуры сайта).
<?php
/*
Обновляем курсы валют
*/
class modWebCurrenciesUpdatecoursesProcessor extends modProcessor{
public function process(){
$date_req = date('d/m/Y');
$url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req={$date_req}";
if(!$xml = simplexml_load_file($url)){
$error = "Не удалось получить курсы валют";
$this->modx->log(xPDO::LOG_LEVEL_ERROR, "[- ".__CLASS__." -] {$error}");
return $this->failure($error);
}
//else
foreach($xml->Valute as $v){
if($v->CharCode == 'USD'){
if($course = round((float)str_replace(",", ".", $v->Value), 2)){
$this->update_course(772, $course);
}
}
else if($v->CharCode == 'EUR'){
if($course = round((float)str_replace(",", ".", $v->Value), 2)){
$this->update_course(773, $course);
}
}
}
// Очищаем кеш
$this->modx->cacheManager->refresh();
return $this->success("Курсы успешно обновлены");
}

protected function update_course($id, $course){
if($doc = $this->modx->getObject('modResource', $id)){
$doc->setTVValue(42, $course);
}
return true;
}
}
return 'modWebCurrenciesUpdatecoursesProcessor';
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.