Приветствую всех.
Итак, суть проблемы.
Имеется магазин на Modx 1.0.5 EVO и Shopkeeper 1.3.5.
Все товары в базе сайта имеют цену в валюте — часть в долларах, часть в евро. Задача — сделать так, чтобы на сайте пользователям цена была видна только в рублях с пересчетом по курсу ЦБ, пересчет курса раз в сутки автоматически.
Пробовал сделать один TV с ценой в валюте (price_valuta) и TV с выбором типа валюты (USD или EUR, называется valuta, тип — dropdown list menu), а также TV с конечной ценой, в значение «по умолчанию» вставить это:
@EVAL $tv_arr=$modx->getTemplateVars(array('valuta','price_valuta'),'id',$docid); $sourceprice = $tv_arr[0]['value']; $currency = $tv_arr[1]['value'];
switch($currency){
case 'usd': $price = round($sourceprice *$modx->config['kurs_dollar'],2); break;
case 'eur': $price = round($sourceprice*$modx->config['kurs_euro'],2); break;
}
return $price;
Без знаков переноса, естественно.
В плагин TVevaler 1.1.0 добавлена TV с конечной ценой в рублях, настройки плагина: Hide the TVs — false, Checkbox of refresh values default checked — true.
Здесь config['kurs_dollar'] и config['kurs_euro'] пользовательские настройки, добавленные плагином customSettings 1.0. Эти настройки лежат в таблице modx_system_settings и обновляются раз в сутки отдельным скриптом через cron. Эти значения в БД меняются (видно через phpmyadmin), но в админке (Инструменты ->Конфигурация) остаются старые значения! И цены не пересчитываются, если даже вместо $modx->config['kurs_dollar'] поставить просто число, то надо идти по каталогам и пересохранить хотя бы один товар в каждой категории. А надо, чтобы все это происходило автоматом.
В принципе, можно сделать сам показ цен в карточке товара с помощью phx-сниппета, но как сделать, чобы эта же цена шла в корзину — вопрос.
Помогите пожалуйста советом, я в этом деле совсем новичок.
- 0
- 24 декабря 2011, 19:54
- flynzz