Ответить Новая тема Новый опрос 
 Доработать стандартный шаблон
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


13-06-2017 04:20
В режиме сетка и список у каждого товара должны быть поля:
- фото
- цена
- количество в наличии
- количество в заказе (в корзине)
- на сумму
- кнопка с алгоритмом "Изменить в корзине"
- добавить к сравнению
Т.е. В поле для ввода количества для заказа всегда стоит "1", а нужно чтобы стояло количество этого товара в корзине этого покупателя. Если этого товара в корзине нет, то "0", а лучше пустое поле. (для того, чтобы посмотреть сколько такого товара я уже заказал, каждый раз не открывать корзину)
Соответственно должен будет измениться алгоритм работы кнопки "В корзину" в том смысле, что она сейчас работает так
Если товар уже есть в корзине (5 штук), то производится добавление его количества и если в поле для заказа ввести 3 и нажать на кнопку "В корзину"то в корзине будет 8. А должно быть 3. Т.е. смысл кнопки должен стать "изменить в корзине"
Есть необходимость и других доработок.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


13-06-2017 16:13
Правильным вариантом здесь будет написание модуля (даст больше возможностей для решения подобной задачи), но можно обойтись и небольшими правками в коде шаблона:
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});
     });
});
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 00:46
Алекс, большое вам спасибо.
Если не затруднит - добавьте еще кнопочку "Применить к корзине" с алгоритмом не "3+5", а "вместо 3 поставить 5"
И вместо русских букв у меня вопросики �������
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 00:58
ну если уж еще понагличать, то в режиме список - ок
а в режиме сетка вставляемые данные как-бы сдвинуты, т.е. данные по первому товару выше всех товаров, по второму рядом с первым и т.д. а нижний товар без данных


Изображения:
скрин список.png - Размер файла215.57KB, Скачиваний: 188 (Нажмите для увеличения) скрин сетка.png - Размер файла196.42KB, Скачиваний: 208 (Нажмите для увеличения) скрин сетка 2.png - Размер файла340.68KB, Скачиваний: 177 (Нажмите для увеличения)
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 01:29
Только сейчас заметил, что изменения в корзине делаются по + и -
(но у них не работают ограничения data-min и data-max)
а "Применить к корзине" нужна из-за того, что специфика товара такова, что могут заказывать сотнями штук, например, Бенгальские огни в коробке 200 штук, а некоторые берут по 20 коробок - 4000 раз на плюсик :)


Сообщение отредактировал Огонек (13-06-2017 21:29)
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 01:38
с кодировкой поспешил написать - сам поправил
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 01:59
Цитата:
ну если уж еще понагличать, то в режиме список - ок
а в режиме сетка вставляемые данные как-бы сдвинуты, т.е. данные по первому товару выше всех товаров, по второму рядом с первым и т.д. а нижний товар без данных

Так выглядит когда вставляю код между <ul> и <li>
А если вставляю после <li>, то когда выбираешь режим список эти строки не отражаются вообще, а когда нажимаешь "режим сетка" показываются нормально, но только после того как обновляешь после этого страницу
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Огонек
Новичок
Сообщений: 24
Регистрация: 20-04-2017


14-06-2017 02:59
напрашивается if , но как "запросить" режим отображения и что делать с обязательным обновлением страницы при Сетке
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос