Конвертация валюты в старой цене

Всем привет!
Когда-то Володя помог реализовать автоматическую конвертацию валюты с помощью такого плагина:
<?php
$curs_global = $modx->getOption('eur_uah');
$product = $modx->getObject('msProduct', $product->id);
$curs = $product->get('vendor.phone') ?: $curs_global;

switch($modx->event->name) {
    case 'msOnGetProductPrice':
     
        $returned = $modx->getPlaceholder('_returned_price');
        if (is_array($returned)) {
            $price = $returned['price'];
        }
        $price = $price * $curs;
        
        $values = $modx->Event->returnedValues;
        $values['price'] = $price;
        $modx->event->returnedValues = $values;
        break;
}
который вешается на событие msOnGetProductPrice

Можно ли с помощью данного плагина конвертировать валюту еще и в старой цене?
Vladimir Glukhov
11 марта 2019, 12:15
modx.pro
2
490
0

Комментарии: 3

Andre
26 января 2021, 19:33
0
автор решения
Создаем плагин вешаем на событие msOnGetProductFields

<?php
switch($modx->event->name) { 
    case 'msOnGetProductFields':
        $returned_values = & $modx->event->returnedValues;
        $values =  $modx->event->params['data'];
          
        $returned_values['price'] = $values['price'] * 2;
        $returned_values['old_price'] = $values['old_price'] * 3;
 
    	break;
}
    Антонио
    09 марта 2021, 15:43
    0
    Andre, подскажи, пожалуйста, почему на странице могут не выводится обработанные старая и новая цены?
    Создал плагин, навесил событие «msOnGetProductFields», в логи пишет корректно, а на странице исходные цены почему-то…
    <?php
    switch($modx->event->name) { 
        case 'msOnGetProductFields':
            $returned_values = & $modx->event->returnedValues;
            $values =  $modx->event->params['data'];
              
            $returned_values['price'] = $values['price'] * 2;
            $returned_values['old_price'] = $values['old_price'] * 2;
            
            $modx->log(1,'returned_price - ' . $returned_values['price'] ); //30
            $modx->log(1,'returned_old_price - ' . $returned_values['old_price'] ); //60
            $modx->log(1,'values_price - ' . $values['price'] ); //15
            $modx->log(1,'values_old_price - ' . $values['old_price'] ); //30
     
        	break;
    }
      Денис
      10 марта 2021, 10:24
      0
      Та же проблема. Решение не нашли?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3