Кастомный класс корзины и msoptionsprice
Здравствуйте! очень надеюсь на помощь. Нашел у вас тут на форуме кастомный класс корзины. Чтоб корзина динамически обновлялась. Все отлично работает кроме нюанса, что при выборе опции размера товара. В корзину перестал уходить правильный размер и цена — берется минимальная.
Вот класс, можно ли как то добавить сюда передачу параметров выбраного размера в карточке товара? Заранее спасибо за хоть какую то подсказку.
Вот класс, можно ли как то добавить сюда передачу параметров выбраного размера в карточке товара? Заранее спасибо за хоть какую то подсказку.
<?php
class msCartProductHandler extends msCartHandler {
public function status($data = array()) {
$status = array(
'total_count' => 0
,'total_cost' => 0
,'total_weight' => 0
,'cart' => $this->getProducts()
);
foreach ($this->cart as $item) {
if (empty($item['ctx']) || $item['ctx'] == $this->modx->context->key){
$status['total_count'] += $item['count'];
$status['total_cost'] += $item['price'] * $item['count'];
$status['total_weight'] += $item['weight'] * $item['count'];
}
}
return array_merge($data, $status);
}
public function getProducts($cart) {
$products = '';
$cart = $this->get();
if (!$this->modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) {return false;}
$pdoFetch = new pdoFetch($this->modx, array());
$tplOuter = 'msCartOuter';
$tplRow = 'msCartRow';
$products = array('goods' => '', 'total_count' => 0, 'total_weight' => 0, 'total_cost' => 0);
foreach ($cart as $k => $v) {
$product = $this->modx->getObject('msProduct', $v['id']);
$row['id'] = $product->get(id);
$row['key'] = $k;
$row['thumb'] = $product->get('thumb');
$row['count'] = $v['count'];
$row['pagetitle'] = $product->get('pagetitle');
$row['old_price'] = $this->ms2->formatPrice(
$row['price'] != $v['price']
? $row['price']
: $row['old_price']
);
$row['price'] = $this->ms2->formatPrice($v['price']);
$row['weight'] = $this->ms2->formatWeight($v['weight']);
$row['cost'] = $this->ms2->formatPrice($v['count'] * $v['price']);
if (!empty($v['options']) && is_array($v['options'])) {
foreach ($v['options'] as $key => $value) {
$row['option.'.$key] = $value;
}
}
unset($v['options']);
$row['idx'] = $pdoFetch->idx++;
$products['goods'] .= empty($tplRow)
? $pdoFetch->getChunk('', $row)
: $pdoFetch->getChunk($tplRow, $row, $pdoFetch->config['fastMode']);
$products['total_count'] += $v['count'];
$products['total_cost'] += $v['count'] * $v['price'];
$products['total_weight'] += $v['count'] * $v['weight'];
}
$products['total_cost'] = $this->ms2->formatPrice($products['total_cost']);
$products['total_weight'] = $this->ms2->formatWeight($products['total_weight']);
return empty($tplOuter)
? $pdoFetch->getChunk('', $products)
: $pdoFetch->getChunk($tplOuter, $products, $pdoFetch->config['fastMode']);
}
}