Как я могу обновить store_product_price с помощью JS
Итак, у меня есть сетка миниатюр фотографий, которые продаются через один продукт, настроенный в магазине. Этот продукт имеет два размера, маленький и большой. Большой имеет модификатор, который увеличивает цену при выборе.
Я использую JS, чтобы удалить, а затем клонировать группу модификаторов в одну из миниатюр, выбранных пользователем, эффективно разделив ее на один продукт на странице.
Моя проблема в том, что когда я удаляю и клонирую модификаторы, цена остается такой же, как была выбрана, когда последний продукт был добавлен в корзину.
Итак и пример:
Пользователь выбирает thummb#1 с большим модификатором (+$20) и добавляет его в корзину (AJAX). Затем, когда она выбирает большой палец № 5, модификатор возвращается к маленькому, но цена по-прежнему отражает большой.
Так как все это делается через JS без перезагрузки страницы, как я могу сбросить store_product_price?
ajax : function(){
if( !$( '#product_form' ).size() ) return;
$( '#product_form' ).submit( function(){
$( '.card .add_to_cart' ).val( 'Processing...' );
var url = $( this ).attr( 'action' );
var data = $( this ).serialize();
$.post( url, data, function(){
$( '#sidebar-cart' ).load( '/store/cart/' );
$( '.card .add_to_cart' ).val( 'Add to Cart' );
$( '.selected' ).removeClass( 'selected' );
$( '.not-selected' ).removeClass( 'not-selected' );
} );
return false;
} );
},
1 ответ
Я не совсем уверен, что вы подразумеваете под "удалить и клонировать модификаторы" - вы создаете новый маленький / большой выпадающий список для каждого эскиза? В таком случае, как он узнает, какой из них отправить с формой?
Может быть проще создать новую форму продукта для каждого эскиза, а затем использовать JS, чтобы при необходимости скрыть / показать модификаторы.
В любом случае, если вы хотите придерживаться положения вещей, вы можете взглянуть на themes/third_party/store/store.js
чтобы увидеть, как store_product_price
класс реализован (я полагаю, вы уже добавили store_product_price
класс по вашей цене, хотя вы не упомянули об этом). Если вы установите $debug = 1
в вашем index.php
тогда он по умолчанию загрузит незавершенную версию javascript, чтобы вам было легче пройти и посмотреть, где он застрял.