1 Отредактировано Андрей (22.03.2016 10:32:11)

Тема: Количество товара для добавления в корзину

Здравствуйте!
В продолжении решения проблемы: торговля упаковками, т.е. несколько штук.
Было придумано следующее решение в 1с создан доп.реквизит "Количество штук в упаковке "
В ReadyScript - соответственно выгружается как характеристика.
В  на странице товара удалось заставить сайт добавлять в корзину нужное количество товаров с помощью следующего кода

{foreach $product->fillProperty() as $data}
    {foreach $data.properties as $property}
        {if !$property.hidden && $property.id==347 && $current_user->inGroup('optoviki')}
            <input class="amount-hide" type="text" name="amount" value="{$property->textView()}"> 
        {/if}
    {/foreach}
{/foreach}

Где  $property.id - ИД характеристики на сайте (см. Товары->характеристики)
Формируется поле ввода, в нашем случае мы скрыли его display:none;

ВОПРОС:
Что нужно изменить в common.js
Чтобы можно было уникализировать  name для input, так как на странице, где несколько товаров данное решение работает не корректно.
Т.е. мы видим что всё будет работать если будет

    <input class="amount-hide" type="text" name="amount{$product.id}" value="{$property->textView()}"> 

Тогда соответственно код из common.js

 var amount = $('[name="'+data.options.amountFormName+'"]', context).val();

не будет работать.
Как нам прилепить {$product.id} в выше приведенный кусок кода.
Спасибо!

Повысить оценку Понизить оценку

Re: Количество товара для добавления в корзину

Ответ:
Всё гораздо проще чем Вы думаете:) Нужно просто у контейнера который оборачивает сведения о товаре указать атрибут data-id="id товара". И тогда все дейтсвия будут действовать в рамках этого контейнер. Ну например:

<div data-id="5">
  ....
  Ваш инпут с количеством
  ...
</div>

3

Re: Количество товара для добавления в корзину

Закусило Александр пишет:

Ответ:
Всё гораздо проще чем Вы думаете:) Нужно просто у контейнера который оборачивает сведения о товаре указать атрибут data-id="id товара". И тогда все дейтсвия будут действовать в рамках этого контейнер. Ну например:

<div data-id="5">
  ....
  Ваш инпут с количеством
  ...
</div>

Здорово!!! То, что нужно

{foreach $product->fillProperty() as $data}
    {foreach $data.properties as $property}
        {if !$property.hidden && $property.id==347 && $current_user->inGroup('optoviki')}
            <div data-id="{$product.id}">
                <input class="amount-hide" type="text" name="amount" value="{$property->textView()}"> 
            </div>        
        {/if}
    {/foreach}
{/foreach}

Повысить оценку Понизить оценку

4

Re: Количество товара для добавления в корзину

Закусило Александр пишет:

Ответ:
Всё гораздо проще чем Вы думаете:) ....

Почти идеально.
Осталась проблема с /moduleview/shop/cartpage.tpl
Функция увеличения

 incProduct = function() {
            if (!$cartBlock.hasClass(data.options.inLoadingClass)){
                var amountField = $(this).closest(data.options.amountWraper).find(data.options.amountField);
                var amountTextField = $(this).closest(data.options.amountWraper).find(data.options.amountTextField);
                amountField.val( (+amountField.val())+1 ).keyup();
                amountTextField.text( amountField.val() );

и соответственно уменьшения

decProduct = function() {
            if (!$cartBlock.hasClass(data.options.inLoadingClass)){
                var amountField = $(this).closest(data.options.amountWraper).find(data.options.amountField);
                var amountTextField = $(this).closest(data.options.amountWraper).find(data.options.amountTextField);
                
                if ((+amountField.val())>1) {
                    amountField.val( (+amountField.val())-1 ).keyup();
                    amountTextField.text( amountField.val() );
                }
            }
            return false;
        },

Будем думать

Повысить оценку Понизить оценку

Re: Количество товара для добавления в корзину

Так а в чём проблема?

Re: Количество товара для добавления в корзину

Там нужно посмотреть признак оборачивающего блока data.options.amountWraper и data.options.amountField
В чём проблема то?