Механизм ajax в MiniShop2

Добрый день! У меня вопрос такой к вам профессионалы, как реализуется все же механизм динамического обновления данных в MiniShop2? Изучая стандартные чанки, я заметил что они оборачиваются в определенные блоки. Например, для того чтобы динамически обновлялась общая стоимость покупок при изменении корзины делают так:
<span class="ms2_total_cost">[[+total_cost]]</span>
. И таким образом делаются аналогично другие поля. Где эта прописана логика, что делают контент динамичным? И пробовал я вывести общую стоимость конкретного товара в корзине, но обновления не происходило по той причине, что он не был обернут в блок. Где это можно допилить? Что-то типа такого чтобы получалось
<span class="ms2_good_cost">[[+cost]]</span>
. Кто подскажет?)
solar-wind
02 октября 2014, 02:49
modx.pro
1
5 174
0

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

Василий Наумкин
02 октября 2014, 07:02
0
Все javascript примочки находятся в одном файле default.js.
    Бикмеметов Ильдар
    18 июня 2015, 01:20
    +1
    Для себя решил вопрос так (может кому то в будущем понадобиться):
    добавил в функцию статуса параметр 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']));
      Александр
      18 апреля 2016, 13:30
      0
      Таким образом будет работать только если 1 товар в корзине, иначе при изменении количества любого товара, в «общую стоимость за товар» будет подставляться стоимость последнего товара.
        Mr.Prop
        09 сентября 2019, 02:01
        0
        Может это поможет?
        modx.pro/help/3898#comment-113583
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          5