Автор Тема: Prestashop FAQ - Как добавить поле для выбора количества на странице категории  (Прочитано 3338 раз)

09 Октября 2014, 14:38:48
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
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());
13 Октября 2014, 20:30:06
Ответ #1
  • Новичок
  • *
  • Сообщений: 34
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, для какой версии Престашоп эти шаги актуальны?

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

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

и перекидывает на страницу оформления заказа.
13 Октября 2014, 23:24:35
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 86048
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это ошибка js-скрипта. Синтаксических ошибок нет, код вы правильно добавили?
14 Октября 2014, 09:37:45
Ответ #3
  • Новичок
  • *
  • Сообщений: 34
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавлял, как написано. Но для второго пункта файла
/themes/ваша тема/js/modules/blockcart/ajax-cart.js
по указанному пути в теме по умолчанию 1.5.6.1 нет.
Файл ajax-cart.js находится в папке modules/blockcart в корне,
поэтому добавлял фрагмент кода по п.2 именно туда.
Без добавления проверял тоже.

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

Из-за чего могут быть ошибки js-скрипта? До сих пор правки кода подобных ошибок не вызывали.
14 Октября 2014, 10:57:27
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20842
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
По названиям переменных, это для prestashop 1.4.
В prestashop 1.5 названия другие.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Октября 2014, 11:16:40
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 20842
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Для 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.
Лучшие цены!!!
13 Ноября 2014, 23:44:00
Ответ #6
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Преста 1.6.0.9
Сделал как в первом посту . Заработало стандартной теме с первого раза :o
Буду тестить! :)
13 Сентября 2016, 15:41:57
Ответ #7
  • Новичок
  • *
  • Сообщений: 35
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А есть что то подобное что бы реализовать вывод и выбор опций у товара в категории?
13 Сентября 2016, 17:56:13
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 13276
  • Репутация: +14555/-0
  • Сообщество PrestaShop
    • Просмотр профиля