Правильным вариантом здесь будет написание модуля (даст больше возможностей для решения подобной задачи), но можно обойтись и небольшими правками в коде шаблона:
1) Откройте файл
/themes/ваша-тема/product-list.tpl и добавьте в начало файла подобный код:
Цитата:
{assign var='cp' value=$cart->getProducts()}
{assign var='cpp' value=[]}
{foreach from=$cp item=p}
{$cpp[$p['id_product']] = $p}
{/foreach}
далее внутри:
Код:
{foreach from=$products item=product name=products}
...
{/foreach}
добавьте подобный код:
Код:
<div class="bqty">
количество в наличии: {$product.quantity|intval}<br/>
количество в заказе (в корзине):
{if isset($cpp[$product.id_product])}{$cpp[$product.id_product]['cart_quantity']|intval}{else}0{/if}
<br />
на сумму:
{if isset($cpp[$product.id_product])}
{displayWtPrice p=$cpp[$product.id_product]['total_wt']}
{else}
0
{/if}
<br />
<form action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post">
<input type="hidden" name="token" value="{$static_token|escape:'htmlall':'UTF-8'}" />
<input type="hidden" name="id_product" value="{$product.id_product|intval}" />
<div class="qty">
<input class="text" name="qty" type="text" value="{if isset($cpp[$product.id_product])}{$cpp[$product.id_product]['cart_quantity']|intval}{else}0{/if}" />
<span class="btn btn-default button-minus" data-min="{if $product.minimal_quantity > 1}{$product.minimal_quantity|intval}{else}1{/if}" data-max="{$product.quantity|intval}" data-act="down">
<span><i class="icon-minus"></i></span>
</span>
<span class="btn btn-default button-plus" data-min="{if $product.minimal_quantity > 1}{$product.minimal_quantity|intval}{else}1{/if}" data-max="{$product.quantity|intval}" data-act="up">
<span><i class="icon-plus"></i></span>
</span>
<div class="clearfix"></div>
</div>
</form>
</div>
2) Откройте файл
/themes/ваша-тема/js/category.js и добавьте подобный код:
Код:
$(document).ready(function()
{
$(document).on('click', '[data-act="up"]', function(e)
{
e.preventDefault();
var id = parseInt($(this).closest('form').find('input[name="id_product"]').val());
var qty = parseInt($(this).closest('form').find('input[name="qty"]').val());
$(this).parent().find('input[name=qty]').val(++qty);
$.post(baseUri, {controller: 'cart', 'add': true, 'ajax': true, qty: 1, id_product: id, token: static_token});
});
$(document).on('click', '[data-act="down"]', function(e)
{
e.preventDefault();
var id = parseInt($(this).closest('form').find('input[name="id_product"]').val());
var qty = parseInt($(this).closest('form').find('input[name="qty"]').val());
if (!isNaN(qty) && qty < 1)
qty = 1;
$(this).parent().find('input[name=qty]').val(--qty);
$.post(baseUri, {controller: 'cart', 'add': true, 'ajax': true, qty: 1, id_product: id, op: 'down', token: static_token});
});
});