В общем нашел способ как парсить mustache script, выводящий элементы страницы корзины и сумму товаров в basket-item.php;basket-total.php:
в шаблоне catalog.item/. ./card/template.php делаю небольшой json объект вида
| Код |
|---|
var <?=$arResult['AREA_ID'].'mustache'?> = {
NAME: '<?=$item['NAME']?>',
IMAGE_URL: '<?=$item['PREVIEW_PICTURE']['SRC']?>',
SHOW_DISCOUNT_PRICE: 'Y',
DISCOUNT_PRICE_PERCENT: 'Y',
DISCOUNT_PRICE_PERCENT_FORMATED: '<?=$option['DISCOUNT']?>%',
SUM_FULL_PRICE_FORMATED: '<?=$option['DISCOUNT']?> руб.',
ID: '<?=$item['ID']?>',
QUANTITY: 1,
SUM_PRICE_FORMATED: '<?=$option['PRICE']?> руб.',
IS_TEXT: true,
CODE: 'WEIGHT',
VALUE: '<?=$option['WEIGHT']?>'
};
|
далее в скрипте обрабатывающий добавление товара в корзину уже после делаю ajax запрос
| Код |
|---|
BX.ajax({
url: '/personal/basket/?ajax=Y',
method: 'GET',
processData: true,
timeout: 30,
onsuccess: function(data) {
let mustache = t[id+'mustache'], //получаю json объект для парсинга
html = Mustache.to_html($(data)[0].innerHTML, mustache), //парсю
cont = $('#basket-item-table');
cont.append(html); // в конец списка товаров корзины
}
})
|
но при таком подходе не работают (+;-) и удаление;
как я понял это из за того, что функция BX.Sale.BasketComponent.init(параметры), инициализирующая sale.basket.basket/. ./js/component.js и содержащая в себе огромную простыню из json объекта всех товаров в корзине на момент загрузки страницы, которая находится в sale.basket.basket/. ./template.php - инициализируется только при загрузке страницы
тогда следующий вопрос: есть ли метод переинициализации BX.Sale.BasketComponent.init(без первоначальной простыни) уже после ajax парсинга mustache скрипта-шаблона?