UMI CMS Работа корзины с товарами имеющим опции
Не корректная работа страницы Корзина в UMI.CMS, если в ней присутствует товары одной модели с разными опциями.
При разработке сайта, интернет магазина, часто сталкиваемся с ситуацией, когда имеется товар одной модели с разными характеристиками. Например: футболка определенной модели может иметь разные размеры и/или цвета. При этом она должна быть одной карточкой товара с возможностью выбора характеристики. В 1С это называется - характеристики товара, в Bitrix - товарные предложения. UMI.CMS предлагает делать реализацию этой возможности с помощью так называемых опций.
Остановимся на примере с одной характеристикой (опцией) - размер.
Реализация данного механизма – тема отдельной статьи. Здесь мы рассмотрим работу страницы Корзина.
Допустим, вы реализовали возможность работы такого функционала. На сайте есть возможность выбора размера и добавления товара в корзину. Если добавить один товар с разными размерами и зайти в корзину, мы увидим соответствие тому, что мы заказали. Однако, если начать производить манипуляции с корзиной (изменение заказа на странице корзины), можно заметить неверную работу функционала.
Работа кнопок изменения количества
При использовании стандартных кнопок увеличить или уменьшить количество товара на единицу, можно увидеть неверную работу сайта.
В зависимости от версии CMS и ситуации, может измениться:
- количество данного товара, но с другой опцией (размером), а не тем у которого мы меняем количество;
- ничего не измениться;
- в корзину добавиться данная модель, но без указания опции, а та строка, которые мы пытались изменить останется той же и т.п.
Решаем проблему
Делаем резервную копию файла /tpls/emarket/default.tpl
Редактируем оригинал данного файла.
Находим блок options_item и заменяем его содержимое на &options[Название вашей опции]=%id%
У нас было:
$FORMS['options_item'] = <<<END
%name% +%price%%list-comma%
END;
Стало:
$FORMS['options_item'] = <<<END
&options[razmeri]=%id%
END;
Находим блок order_item и в нем строки с сылками, которые отрабатывают по кнопкам. В конец ссылки добавляем %options%
У нас было:
<input type="text" class="quantity_product" data-mask="numbers" value="%amount%">
<a href="/emarket/basket/put/element/%content get_page_id(%link%)%/?amount=%emarket amount('add',%amount%)%" class="plus_goods"></a> <a href="/emarket/basket/put/element/%content get_page_id(%link%)%/?amount=%emarket amount('remove',%amount%)%" class="minus_goods"></a>
Стало:
<input type="text" class="quantity_product" data-mask="numbers" value="%amount%">
<a href="/emarket/basket/put/element/%content get_page_id(%link%)%/?amount=%emarket amount('add',%amount%)%%options%" class="plus_goods"></a> <a href="/emarket/basket/put/element/%content get_page_id(%link%)%/?amount=%emarket amount('remove',%amount%)%%options%" class="minus_goods"></a>
Сохраняем изменения и проверяем.
Кнопки работают корректно.
- Комментарии