Кнопка купить для комплекта товаров перегружает страницу - как этого избежать?

Вопрос простой, может кто уже сталкивался. Есть плагин "Товары-комплекты", есть собственно условно главный товар и комплект на основе этого главного товара. В главном товаре есть подстраница, которая средствами темы выводится в отдельный таб и имеет крайне простое содержание вывода списка комплекта для этого товара:

 {shopItemsetsPlugin::showItems(($product.params.komp), 0, 'itemset-table.html')}

где параметр komp задается в свойствах главного товара и являет собой айди товара-комплекта, а itemset-table.html - это страница, на основе базовой itemsets-list-table.html, входящей в состав плагина. В этом файле по умолчанию закомментирован последний столбик, в котором есть кнопка купить для каждой строки таблицы (каждого компонента комплекта). Снимаем комменты - видим кнопки. Кнопки совершенно корректно добавляют товар из нужной строчки в корзину - иконка корзинки подпрыгивает, количество товаров в ней увеличивается на +1.

Теперь в конец файла itemset-table.html добавляем код для кнопки "купить комплект" соответствующего функционала. При вот такой реализации:

{if !empty($product.params.komp)}
{$komplekt = $wa->shop->product($product.params.komp)}
{if $komplekt}
	<form class="addtocart" action="{$wa->getUrl('/frontendCart/add')}" method="post"> 
	    <div class="add2cart" style="margin-top: 15px;">
                <div class="product-list-group-btn">
                    <input type="submit" class="btn btn-accent btn-lg" value="Купить комплект со скидкой!">
                    <input type="hidden" value="{$product.params.komp}" name="product_id"> 
                </div>
            </div>
	</form>
{/if}
{/if} 

Кнопка получается красивой и даже функциональной - комплект в корзину добавляется - но при этом происходит перезагрузка страницы, и естественно открывается первый таб, а не последний, в котором идет комплект.

Вопрос: как правильно написать код кнопки покупки товара комплекта, чтобы она работала так же, как работают кнопки покупки товаров из той же таблицы? У тех кнопок код такой:

<form class="addtocart" method="post" {if $p.sku_count > 1}data-url="{$p.frontend_url}?cart=1"{/if} action="{$wa->getUrl('/frontendCart/add')}">
      {if $wa->shop->settings('ignore_stock_count') || $p.count === null || $p.count > 0}
        <input type="hidden" name="product_id" value="{$p.id}">
        <input class="btn btn-accent btn-sm" type="submit" value="{_w('Add to cart')}">
      {else}
        <input type="submit" value="" class="btn btn-accent btn-sm disabled" disabled="disabled" title="{_w('Out of stock')}">
      {/if}
</form>

Посмотреть суть проблемы можно, например, тут: http://www.krafthaus.ru/tandyry/bolshoi/ - вкладка "Спецпредложение" под картинками.

1 ответ

  • 1
    Stiv 17 декабря 2015 08:40 #

    проблема на половину решена, теперь страница не перегружается, количество товаров в корзине увеличивается на +1, но сумма (денег) корзины остается прежней (или нулевой в базовом сценарии). что тут подправить, чтобы и деньги в корзине обновлялись?

    {if !empty($product.params.komp)}
    {$komplekt = $wa->shop->product($product.params.komp)}
    {if $komplekt}
    
    <div class="product-list">
    <form class="addtocart" action="/cart/add/" method="post"> 
    		    <div class="add2cart" style="margin-top: 15px;">
                    <div class="product-list-group-btn">
    	<input type="submit" class="btn btn-accent btn-lg" value="Купить комплект со скидкой!">
    	<input type="hidden" value="{$product.params.komp}" name="product_id">    
    	            </div>
    	       </div>
    </form>
    </div>
    {/if}
    {/if} 

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите