Как я могу обновить 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, чтобы вам было легче пройти и посмотреть, где он застрял.

Другие вопросы по тегам