Меняется old_price при изменении price в плагине
При изменении цены через плагин (события: msOnGetProductPrice, msOnBeforeAddToCart, msOnAddToCart) перезаписывается значение поля old_price значением price (до изменения). Как сделать так, чтобы значение не изменялось или записать в него свое значение?
Плагин:
Плагин:
<?php
switch ($modx->event->name) {
case 'msOnGetProductPrice':
if ($modx->context->key == 'mgr') {
return '';
}
$currencyrate = $modx->getService('currencyrate', 'currencyrate',
$modx->getOption('currencyrate_core_path', null,
$modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/', $scriptProperties);
if (!($currencyrate instanceof currencyrate)) {
return '';
}
$currency = $currencyrate->currency;
if ($currency == $modx->getOption('currencyrate_currency')) {
return '';
}
$list = $currencyrate->getList();
$values = & $modx->event->returnedValues;
if (!isset($modx->event->returnedValues['price'])) {
$modx->event->returnedValues['price'] = $price;
}
$price = &$modx->event->returnedValues['price'];
$new_price = ($price * $list[EUR]) / $list[$currency];
if ($new_price !== false) {
$price = $new_price;
}
break;
}
Комментарии: 5
Приветствую. Удалось решить задачу?
После работы похожего плагина в old_price записывается значение price.
После работы похожего плагина в old_price записывается значение price.
В итоге записывал старую цену в опции.
На странице товара:
На странице товара:
<input type="hidden" name="options[old_price]" value="{$old_price | calcPrice}">
В корзине:<div class="cpi__price-final"> <span class="price">{$product.price} {$.cookie['currency']}</span> </div>
{if $product.options[old_price]?}
<div class="cgray"> <s> <span class="price">{$product.options[old_price]} {$.cookie['currency']}</span> </s> </div>
{/if}
Хм. А как наоборот сделать? У меня не записывает в old_price…
Насколько я помню, у меня тоже в плагине на это событие не удавалось записать old_price
Расширил корзину, скопировав основной класс, просто добавил
$old_price = $product->loadData()->get('old_price');
И вставил сюда$this->cart[$key] = array(
'id' => $id,
'price' => $price,
'old_price' => $old_price,
'weight' => $weight,
'count' => $count,
'options' => $options,
'ctx' => $this->modx->context->get('key'),
);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.