Помощь Поддержка или помощь c Prestashop - 2 часть

Статус
В этой теме нельзя размещать новые ответы.
Что ж, так как суровые правила сайта не позволяют новичку создать полезную тему, то напишу здесь.

Делаем счётчик количества товара для добавления в корзину на странице категории (1.6.1.x).

Нам будет необходимо править всего 2 файла шаблона. В ядро даже лезть не будем.
Как создать работающее поле ввода количества товара описал Для просмотра ссылки Войди или Зарегистрируйся товарищ модератор сообщества PrestaShop.

Поэтому эту часть в двух словах переведу на русский.
Открываем /themes/default-bootstrap/product-list.tpl
В районе 149-й строки находим следующий код:
PHP:
{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.customizable != 2 && !$PS_CATALOG_MODE}
    {if (!isset($product.customization_required) || !$product.customization_required) && ($product.allow_oosp || $product.quantity > 0)}
        {capture}add=1&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token}{/if}{/capture}
        <a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart', true, NULL, $smarty.capture.default, false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{if isset($product.product_attribute_minimal_quantity) && $product.product_attribute_minimal_quantity >= 1}{$product.product_attribute_minimal_quantity|intval}{else}{$product.minimal_quantity|intval}{/if}">
            <span>{l s='Add to cart'}</span>
        </a>
    {else}
        <span class="button ajax_add_to_cart_button btn btn-default disabled">
            <span>{l s='Add to cart'}</span>
        </span>
    {/if}
{/if}

И прямо перед первой ссылкой <a class="button ajax_add_to_cart_button..... добавляем код текстового поля:

PHP:
<input style="font-size:27px; text-align:center; width:30px;" type="text" name="qty" id="quantity_to_cart_{$product.id_product|intval}" value="1"/>

Сохраняем/грузим файл и переходим ко второму.
Открываем /themes/default-bootstrap/js/modules/blockcart/ajax-cart.js
В районе 137-й строки находим код:
Код:
ajaxCart.add(idProduct, null, false, this, minimalQuantity);

Расширяем его до вот такого:
Код:
ajaxCart.add(idProduct, null, false, this, $('#quantity_to_cart_'+idProduct+'').val());

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

Теперь добавляем кнопки увеличения/уменьшения этого самого количества. Можно пойти легким путем и просто добавить нашему input-у атрибут type="number". Но если хотим редактировать стили кнопок и сделать их отдельно, то необходимо внести следующие правки в вышеперечисленные файлы.

В product-list.tpl:

PHP:
<div class="incr-decr-buttons">
   <a href="#" data-field-qty="qty_{$product.id_product|intval}" class="product_quantity_incr">
     <span><i class="icon-chevron-up"></i></span>
   </a>
   <a href="#" data-field-qty="qty_{$product.id_product|intval}" class="product_quantity_decr">
     <span><i class="icon-chevron-down"></i></span>
   </a>
</div>
<input type="text" min="1" name="qty_{$product.id_product|intval}" id="quantity_to_cart_{$product.id_product|intval}" class="cat-prod-qty" value="1" />
<a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart', true, NULL, $smarty.capture.default, false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l
s='Add to cart'}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{if isset($product.product_attribute_minimal_quantity) && $product.
product_attribute_minimal_quantity >= 1}{$product.product_attribute_minimal_quantity|intval}{else}{$product.minimal_quantity|intval}{/if}">
   <span>{l s='Add to cart'}</span>
</a>

В ajax-cart.js:

Код:
    // The button to increment the product value
     $(document).on('click', '.product_quantity_incr', function(e){
      e.preventDefault();
      fieldName = $(this).data('field-qty');
      var currentVal = parseInt($('input[name='+fieldName+']').val());
         quantityAvailableT = 100000000;
      if (!isNaN(currentVal) && currentVal < quantityAvailableT)
      $('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
      else
      $('input[name='+fieldName+']').val(quantityAvailableT);
     });
      // The button to decrement the product value
     $(document).on('click', '.product_quantity_decr', function(e){
      e.preventDefault();
      fieldName = $(this).data('field-qty');
      var currentVal = parseInt($('input[name='+fieldName+']').val());
      if (!isNaN(currentVal) && currentVal > 1)
      $('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
      else
      $('input[name='+fieldName+']').val(1);
     });


Теперь объясню, что мы сделали.
Сначала мы присвоили нашему полю идентификатор #quantity_to_cart_{$product.id_product|intval}, который в окончании возвращает уникальный идентификатор каждого товара. И связали это поле с кнопкой добавления товара в корзину.

Во второй части мы добавили в файл шаблона код самих кнопок на увеличение/уменьшение. Затем в .js добавили код, отвечающий за ту же самую функцию на странице отдельного товара, немного видоизменив его. Тут самое главное — обратить внимание на класс кнопок, повторяющихся в js
(.product_quantity_incr и .product_quantity_decr). Эти классы обязательно должны отличаться от классов аналогичных кнопок на странице товара. Иначе получим двойное срабатывание скрипта на странице товара, тем самым увеличивая/уменьшая количество на 2 за шаг.
Всё. Готов ответить на вопросы по теме. :)
P. S. Для просмотра ссылки Войди или Зарегистрируйся.
 
Я использовал для переноса с одного магазина в другой - сторонний софт eMagicOneStore manager, все отлично перенесло
Уважаемый, можете кинуть ссылку на гайд какой-нибудь или дать краткую инструкцию по переносу товаров?
 
Не могу понять, в чем дело.
Указываю для группы клиентов "по умолчанию" (то есть для зарегистрированных) скидку 5%. Делаю это прямо в свойствах группы.
Результат неадекватен: скидка 5% сразу становится доступной для всех, даже для гостей (не логиненных).
1.6.1.1, шаблон Panda (если это важно).
Буду благодарен за подсказку куда копнуть.

мощнее выглядит, если через Ценовые правила корзины сделать купон на 5% для нужной группы,
результат тот же - а визуализация маркетинга лучше
 
Кто-нибудь сталкивался с таким глюком.
Некоторым покупателем (только небольшой части) не дает в корзине сделать заказ с сообщением, что обязательно для заполнения поле "скидочного купона".
В Правилах корзины есть полтора десятка промо-кодов для групп постоянных клиентов, но обязательным то поле никак не является.
Версия престы 1.6.0.9
Тема: warehouse
В журнале событий никаких оповещений нет.
Непонятно как лечить такое.


группы покупателей копать...
Знать бы что там еще копать. Само по себе скидка - это же даже не модуль, а базовая функция. Все что можно в группах клиентов это назначать скидку и отключать отдельные модули.
 
Всем привет!
Хочу сменить шаблон и перейти с 1,5 на 1,6. Кто может помочь за вознаграждение? Пишите в лс.
И такой вопрос для тех кто знает: повлияет ли на сео смена шаблона? Не просядет в поиске магаз?
 
если через Ценовые правила корзины сделать купон на 5% для нужной группы
То же поведение. Незалогиненным показываются старые зачеркнутые цены и новые со скидкой 5%.
Да что ж такое...
 
То же поведение. Незалогиненным показываются старые зачеркнутые цены и новые со скидкой 5%.
Да что ж такое...
вообще в самом дистрибутиве 1.6.1.1 и 2 есть проблемы. Чистая установка или нет?
 
Нет, апгрейд 1.4 - 1.6 - 1.6.1.1
 
Нет, апгрейд 1.4 - 1.6 - 1.6.1.1
попробуй дефолтную установку, возможно баг, если нет - перебрасывай товары, клиентов и т.п. У меня были проблемы с 1.6.1.1 и 1.6.1.2 - корзина барахлила, все то же самое на 1.6.0.14 - корзина работает без проблем.
 
подскажите, как сделать что бы выводилось две цены Специальная и зачеркнутая старая цена в списке и в карточке товара? Если указывать скидку суммой или в %, тогда две цены появляются, а если указать просто специальную цену то выдается только одна специальная цена....
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху