Механизм ajax в MiniShop2
Добрый день! У меня вопрос такой к вам профессионалы, как реализуется все же механизм динамического обновления данных в MiniShop2? Изучая стандартные чанки, я заметил что они оборачиваются в определенные блоки. Например, для того чтобы динамически обновлялась общая стоимость покупок при изменении корзины делают так:
<span class="ms2_total_cost">[[+total_cost]]</span>
. И таким образом делаются аналогично другие поля. Где эта прописана логика, что делают контент динамичным? И пробовал я вывести общую стоимость конкретного товара в корзине, но обновления не происходило по той причине, что он не был обернут в блок. Где это можно допилить? Что-то типа такого чтобы получалось <span class="ms2_good_cost">[[+cost]]</span>
. Кто подскажет?) Комментарии: 5
Все javascript примочки находятся в одном файле default.js.
Для себя решил вопрос так (может кому то в будущем понадобиться):
добавил в функцию статуса параметр price
добавил в функцию статуса параметр price
/* @inheritdoc} */
public function status($data = array()) {
$status = array(
'total_count' => 0
,'total_cost' => 0
,'total_weight' => 0
);
foreach ($this->cart as $item) {
if (empty($item['ctx']) || $item['ctx'] == $this->modx->context->key){
$status['price'] = $item['price'];
$status['total_count'] += $item['count'];
$status['total_cost'] += $item['price'] * $item['count'];
$status['total_weight'] += $item['weight'] * $item['count'];
}
}
return array_merge($data, $status);
}
добавил в файле default.js после строки$(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
следующее$count = $('#'+status['key']).find('input[name="count"]').val();
$('#'+status['key']).find('.ms2_good_cost').html(miniShop2.Utils.formatPrice($count*status['price']));
Таким образом будет работать только если 1 товар в корзине, иначе при изменении количества любого товара, в «общую стоимость за товар» будет подставляться стоимость последнего товара.
Может это поможет?
modx.pro/help/3898#comment-113583
modx.pro/help/3898#comment-113583
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.