Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Корзина в режиме добавить +1 товар

Следить
Главная
11:07
08 апр
#
?
Максим написал:

Заказчик имеет магазин на Simpla cms. Говорит движок слабый, просил погуглить замену. Присматриваюсь к Impera cms, есть вопрос такой.

На сайте заказчика, когда нажать "в корзину", товар улетает в корзину и количество увеличивается на 1.

На демо Impera cms товар попадает в корзину как новый, стирая количество что было. Я разобрал шаблон корзины, но так и не нашел где изменить режим "заменять" на "приплюсовать".

21:11
02 мая
#
?
Игорь написал:

Вопрос поднимался уже, лет хз сколько назад. Нет такого режима вроде до сих пор.

08:40
04 мая
#
?
Максим написал:

Спасибо, думал не ответят))

Ну как нет, работает же +1 тут


demo.imperacms.ru/products?theme=ToolsVivaTools

Жмите в товаре иконку корзины, закройте всплывшую корзину, нажмите иконку еще, товар увеличится на 1.

16:56
14 мая
#
Разработчик написал:
Игорь написал: Нет такого режима вроде до сих пор.

Этот режим был с самого начала, так как возникает в результате обычной javascript-магии на клиентской стороне сайта. Ведь смотрим Основные URL клиентской стороны сайта, там сказано, что страница корзины обслуживает разные параметры, включая количество товара.

Вдобавок серверная сторона сайта всегда сообщает в куки браузера текущее состояние корзины, каждая позиция имеет формат cart[ID] = N. Осталось лишь клик кнопки "В корзину" дополнить формированием количества N + 1.

Выводим карточки товаров

Допустим, работаем с шаблоном категории, то есть файлом products.tpl.

...
{foreach $products as $item}
    <div class="product">
        Модуль: {name}
        ...
        <div class="variants">
            {foreach $item->variants as $variant}
                {$id = $variant->variant_id}
                ...
                <button onclick="addCart(this, '{$id}')">
                    В корзину
                </button>
            {/foreach}
        </div>
    </div>
{/foreach}
...


Любителям наворотов Тот же пример плюс ещё реализована такая фишка, что при листинге карточек товаров подсвечиваются кнопки тех, что уже находятся в корзине.

...
{foreach $products as $item}
    <div class="product">
        Модуль: {name}
        ...
        <div class="variants">
            {foreach $item->variants as $variant}
                {$id = $variant->variant_id}
                ...
                <button onclick="addCart(this, '{$id}')">
                    {$num = $smarty.cookies.cart.$id|default:0}
                    {if !empty($num)}
                        Уже {$num|escape} шт. в корзине
                    {else}
                        В корзину
                    {/if}
                </button>
            {/foreach}
        </div>
    </div>
{/foreach}
...

Всплывающее окно

Предположим, на странице сайта мы где-то добавили такой фрагмент кода для изначально скрытого окна. Обычно такие фрагменты размещают в конце общего макета страницы.

...
<div class="cartPopup">
    <!-- сюда скрипт добавит результаты -->
</div>
...

Скрипт обработчик

Например, разместим его в конце общего макета страницы, то есть файле index.tpl.

<script>
    function readCookie ( name ) {
        ...
    };

    function addCart ( btn, variantId ) {
        jQuery('.cartPopup').html('загружается...').show();
        var N = readCookie('cart[' + variantId + ']');
        jQuery.ajax({
            url: '/cart/add/' + variantId,
            type: 'POST',
            data: { amount: N + 1,
                    ajax: 1 },
            error: function (xhr, status, thrown) {
                jQuery('.cartPopup').html('Ошибка!');
            },
            success: function (data) {
                jQuery('.cartPopup').html(data);
                jQuery(btn).html('Уже в корзине');
            }
        });
    };
</script>

То же без Javascript

Это предназначено тем, кто любит совсем простые решения. Здесь нет скриптов и всплывающего окна, а клик кнопки открывает страницу корзины с добавлением товара в режиме +1.

...
{foreach $products as $item}
    <div class="product">
        ...
        <div class="variants">
            {foreach $item->variants as $variant}
                {$id = $variant->variant_id}
                {$num = $smarty.cookies.cart.$id|default:0}
                ...
                <a href="/cart/add/{$id}?amount={$num + 1}">В корзину</a>
            {/foreach}
        </div>
    </div>
{/foreach}
...


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

...
{foreach $products as $item}
    <div class="product">
        ...
        <div class="variants">
            {foreach $item->variants as $variant}
                {$id = $variant->variant_id}
                {$num = $smarty.cookies.cart.$id|default:0}
                ...
                <form action="/cart/add/{$id}">
                    <input name="amount" type="text" value="{$num + 1}" />
                    <button type="submit">
                        В корзину
                    </button>
                </form>
            {/foreach}
        </div>
    </div>
{/foreach}
...

Очистка корзины

Раз уж коснулись темы передачи данных в корзину, напомню о ещё одной возможности.

...
<form action="/cart" method="post">
    <input name="rechange" type="hidden" value="1" />
    <button type="submit">
        Очистить корзину
    </button>
</form>
...

Добавление нескольких товаров за раз

Ещё одна мало известная возможность. Предположим, у нас есть варианты товаров с идентификаторами 111, 222, 333 и мы хотим за один клик положить в корзину по единице этих товаров.

...
<form action="/cart" method="post">
    Краски   <input name="amounts[111]" type="text" value="1" /> шт. <br />
    Кисточка <input name="amounts[222]" type="text" value="1" /> шт. <br />
    Альбом   <input name="amounts[333]" type="text" value="1" /> шт. <br />
    <button type="submit">
        В корзину
    </button>
</form>
...
18:25
15 мая
#
?
Добрый Деня написал:

Игорек (подставной). передай Максимке (подставному) - никто и никогда за имперу не говорил.

От модератора: Подайтесь в немые глухие слепые безрукие гадалки, чем кипятить форум впечатлениями неадекватного фрилансера-переростка: ссылки 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14.
16:59
21 мая
#
?
Максим написал:
Разработчик написал: Скрипт обработчик

Еслиб стер Rss топика, ответ пропустил. Спасибо конечно, уж срок вышел. Заказчик пробует Opencart. Не понравится тогда поговорим. Rss пока придержу.

Добрый Деня написал: передай Максимке (подставному)

:) Ты бота?

Написание ответа

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


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.


Хостинг для сайта

Хостинг для интернет магазина

Svai.net

Украина
г. Черкассы
5+ Заказать

TutHost.ua

Украина
г. Киев
Заказать

Mirohost.net

Украина
г. Киев
? Заказать

HyperHosting.com.ua

Украина
г. Винница
i подробнее Заказать

Agava.ru

Россия
г. Москва
Заказать

Ukraine.com.ua

Украина
г. Киев
5 Заказать
Импераготовасотрудничатьс провайдерами Важно Учтите Этот список перечисляет лишь некоторых хостинг-провайдеров, у которых существуют специальные тарифные планы для интернет магазинов, а сам список не означает, что другие провайдеры чем-то хуже.

Существующие в списке оценки по 5-бальной шкале не должны учитываться при выборе, так как носят субъективный характер и касаются соотношения цена-качество-скорость только для самых дорогих тарифных планов.

Демо Главная Хронология Соглашение Материалы Контакты