Prestashop FAQ - Как добавить поле для выбора количества на странице категории

Автор coder, 09 октября 2014, 14:38:48

« назад - далее »

coder

1. В шаблоне /themes/ваша тема/product-list.tpl после
{if ($product.allow_oosp || $product.quantity > 0)}
добавить поле для количества товара
{l s='Quantity :'}
<input id="quantity_wanted_{$product.id_product|intval}" type="text" name="ajax_qty_to_add_to_cart[{$product.id_product|intval}]" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}" size="3" maxlength="3" />

В начале файла добавить код

<script type="text/javascript">
    $(document).ready(function(){
        $(".ajax_add_to_cart_button").click(function(){
            var f=$(this).attr('href');
            var id = f.split('&')[1].split('=')[1];
            var p="#quantity_wanted_"+id;
            var qty=$(p).attr('value');
            g=f+"&qty="+qty;
            window.location=''+g;
            return false;
        });
    });
</script>


2. В файле /themes/ваша тема/js/modules/blockcart/ajax-cart.js заменить
ajaxCart.add(idProduct, null, false, this);
на
ajaxCart.add(idProduct, null, false, this, $('#quantity_wanted_'+idProduct).val());

vervekin

Подскажите, для какой версии Престашоп эти шаги актуальны?

У меня на 1.5.6.1 поля для количества появились, но при нажатии на кнопку добавить в корзину стабильно выскакивает окно с ошибкой:

impossible to add the product to the cart
textStatus: 'error'
errorThrown: ''
responseText:

и перекидывает на страницу оформления заказа.

DarinSr

Это ошибка js-скрипта. Синтаксических ошибок нет, код вы правильно добавили?

vervekin

Добавлял, как написано. Но для второго пункта файла
/themes/ваша тема/js/modules/blockcart/ajax-cart.js
по указанному пути в теме по умолчанию 1.5.6.1 нет.
Файл ajax-cart.js находится в папке modules/blockcart в корне,
поэтому добавлял фрагмент кода по п.2 именно туда.
Без добавления проверял тоже.

Поскольку версия Престашоп не указана, засомневался в правильности "путей". Откат к прежним файлам product-list.tpl и ajax-cart.js ошибку снимает.

Из-за чего могут быть ошибки js-скрипта? До сих пор правки кода подобных ошибок не вызывали.

PrestaMan

По названиям переменных, это для prestashop 1.4.
В prestashop 1.5 названия другие.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

PrestaMan

Для PrestaShop 1.5, стандартная тема.
1. в файле ajax-cart.js
После кода
//for product page 'add' button...
$('#add_to_cart input').unbind('click').click(function(){
ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
return false;
});

добавьте :
//for list product page 'add' button...
$('ul#product_list .ajax_add_to_cart_button').unbind('click').click(function(){
var idProduct = $(this).attr('rel').replace('ajax_id_product_', '');
if ($(this).attr('disabled') != 'disabled')
ajaxCart.add(idProduct, null, false, this,$('#quantity_wanted_'+ idProduct).val());
return false;
});


2. в файле product-list.tpl
После кода, линия 58:
{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}
перед
{if isset($static_token)}
добавить код:
<!-- START quantity wanted -->
<p class="erh-quantite-produit" {if (!$allow_oosp && $product.quantity <= 0) OR $virtual OR !$product.available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
<label>{l s='Quantity:'}</label>
<input type="text" name="qty" id="quantity_wanted_{$product.id_product|intval}" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product.minimal_quantity > 1}{$product.minimal_quantity}{else}1{/if}{/if}" size="2" maxlength="3" {if $product.minimal_quantity > 1}onkeyup="checkMinimalQuantity({$product.minimal_quantity});"{/if} />
</p>
<!-- END quantity wanted -->
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Ярослав

Преста 1.6.0.9
Сделал как в первом посту . Заработало стандартной теме с первого раза :o
Буду тестить! :)

stydent33

А есть что то подобное что бы реализовать вывод и выбор опций у товара в категории?

Adik


tyreq255

помогите новичку, сделал все как в первом сообщении преста 1.6.1.10. Все работает, но есть один минус, при нажатии "купить" сразу бросает на страницу оформления заказа, что не есть гуд. Помогите!

Adik


tyreq255

нужно чтобы просто добавляло в корзину, а оно сразу переводит на страницу оформления заказа.

Adik


tyreq255

Цитата: Adik от 23 февраля 2017, 18:55:16
В javascript добавьте сброс перехода при клике на кнопку
e.preventDefault(); 
объясните пожалуйста поподробней, он вставляется в файл product-list, в функцию нажатия кнопки? Или в фаил JS?

Adik