Поменять цену у товара через плагин

У некоторых товаров есть коэффициент, мне надо менять цену в зависимости от этого.

На другом проекте смена цены работала так, но там был minishop 2.2

if ($modx->event->name == 'msOnGetProductPrice') {

	$values = & $modx->event->returnedValues;

};

Сейчас в minishop 2.4 &values возвращает NULL, как быть? Какое-то другое событие появилось?
Андрей
06 ноября 2016, 09:06
modx.pro
2
4 849
0

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

Дмитрий Середюк
07 ноября 2016, 02:53
0
Оно? там ниже пример плагина на цену, его то и переработать под свои нужды.

    Василий Наумкин
    07 ноября 2016, 09:27
    2
    +1
    $modx->event->returnedValues
    и будет пустым, пока туда кто-то что-то не запишет.

    Держи рабочий пример из платного msDiscount
    case 'msOnGetProductPrice':
    		if ($modx->context->key == 'mgr') {return;}
    		/**
    		 * Counts discount of current product for current user, based on rules in msDiscount component
    		 * New price must be set in $modx->event->returnedValues['price']
    		 *
    		 * @var msProductData $product Object with product properties
    		 * @var array $data Array with product properties. Can be empty!
    		 * @var float $price Current price of product
    		 */
    		if (!isset($modx->event->returnedValues['price'])) {
    			$modx->event->returnedValues['price'] = $price;
    		}
    		// Get link to product price
    		$price = & $modx->event->returnedValues['price'];
    		$new_price = $msDiscount->getNewPrice($product->id, $price);
    		if ($new_price !== false) {
    			$price = $new_price;
    		}
    		break;
    Обрати внимание, что в событии доступны 3 параметра: $product, $data и собственно $price
      Андрей
      07 ноября 2016, 11:05
      0
      Василий, спасибо, буду смотреть.
        Игорь Терентьев
        30 июня 2017, 02:44
        0
        Как используя это событие изменить не только $price но и $old_price?
          Игорь Терентьев
          05 февраля 2021, 13:12
          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['price'] * 3;
                  $returned_values['article'] = 'custom_article';
                  $returned_values['weight'] = 222;
              	break;
          }
            Антонио
            10 марта 2021, 11:47
            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'] * 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, 12:16
              0
              Может у тебя другие плагины перезаписывают (например на. msOnGetProductPrice)?
                Антонио
                10 марта 2021, 13:42
                0
                Ничего не нашел. В таблице «site_plugin_events» только мой плагин.
                Даже обновил MS2 на другом сайте до последней версии, чтобы протестировать. Не работает и там… Может на 2.8.1-pl нужен какой дополнительный бубен?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9