Новости
- 13.11.2019 - Дополнение "Импорт-Экспорт" для Shopkeeper4
- 13.11.2019 - Открыт Telegram канал проекта Shopkeeper
- 26.10.2019 - Импорт и экспорт товаров в Shopkeeper 4 (видео)
- 25.09.2019 - Вышел Shopkeeper v4.0.8
- 01.09.2019 - Сниппет ShoppingCart - универсальная корзина покупок для MODX
- 02.08.2019 - Агрегация в MongoDB (видео)
- 20.06.2019 - Интеграция Shopkeeper4 для MODX (в разработке)
- 30.04.2019 - Shopker - облачный Шопкипер. Первый месяц - бесплатно!
- 31.03.2019 - DotsMenu - удобное выпадающее меню (блог)
- 19.03.2019 - Вышел Catalogfill 2.4.10 для MODX Revo
- 05.02.2019 - Symfony для MODX-разработчиков
- 15.11.2018 - Импорт/экспорт товаров в Shopkeeper 4
- 14.09.2018 - Установка и обзор Shopkeeper4
- 01.06.2018 - Тест производительности Shopkeeper 4
Последние темы
-
Получить цвет статуса товара?
Поддержка3 -
Проблема с giftCards
Поддержка12 -
Paykeeper2 для MODX стал бесплатным
Новости1 -
Изменить стоимость доставки из "Нового" сниппета
Поддержка9 -
Дополнение "Импорт-Экспорт" для Shopkeeper4
Новости1 -
Редактирование карточки товара
MODX - Вопросы и обсуждения2 -
Открыт Telegram канал проекта Shopkeeper
Новости1 -
Дополнительные параметры товаров - несколько списков radio-button
Поддержка2 -
Цена от параметра
Общие вопросы7 -
Импорт и экспорт товаров в Shopkeeper 4 (видео)
Документация, Уроки1 -
Shopkeeper3 и модуль оплаты PayAnyWay
Поддержка5 -
Как в окно редактирования заказа добавить поле типа daterange?
Поддержка10 -
tagmanager2 select вместо checkbox
Поддержка2 -
Пару вопросов по Symfony, Angular, MongoDB
Пожелания и предложения2 -
Подскажите как реализовать. Спасибо
Общие вопросы2 -
CatalogFill не могу настроить импорт.
Поддержка7 -
CatalogFill 2.4.10 в режиме PHP-FMP
Поддержка3 -
TypeScript - Полный Курс за 1 час
Документация, Уроки1 -
Вышел Shopkeeper4 v4.0.8
Новости1 -
Ошибки при попытке импортировать xml
Общие вопросы6
удалить товар из корзины shopkeeper по id
-
Всем привет. Не подскажите как удалить товар из корзины shopkeeper по id, а не порядковому номеру
-
Если JS то так:
SHK.deleteItem({id: 12});
12 - ID товара
-
Странно, но у меня удаляет полностью всю корзину, shopkeeper 2
-
Странно, но у меня удаляет полностью всю корзину, shopkeeper 2
Ничего странного не вижу. Я писал про SHK 3.
-
Такой возможности в , shopkeeper 2 нет.... но можно ее добавить
//Чтобы обращаться к элементам корзины в Шопкипер 2, необходимо в класс shopkeeper.class.php добавить методы: //Тут я учел что в корзине может быть несколько объектов с одинаковым айдишником но разными ценами, параметрами и так далее, поэтому сразу решаем универсальную задачу - даем не идентификатор, а объект, он по корзине ищет этот объект, получает его индекс в корзине, ну и далее работа проходит как обычно public function isFiltred($object, $element)//Фильтрация объекта { $flag=true; foreach ($object as $fieldname=>$fieldval) { if (is_array($fieldval)) { if (!$this->isFiltred($fieldval, $element[$fieldname])){return false;} }else { if ($element[$fieldname]!=$fieldval){$flag=false;} } } return $flag; } public function getCartIndex($object)//Поиск объекта удовлетворяющего фильтру { $index=0; $i=0; foreach ($_SESSION['shk_purchases'] as $cartitem) { if ($this->isFiltred($object, $cartitem)){$index=$i;} $i++; } return $index; } public function recountDataArrayObject($object,$count,$plus=true)//Основной метод, пересчет, но обращение не по индексу а по объекту { $index=$this->getCartIndex($object); if($count<=0) return; else $count = $this->cleanCount($count); $curSavedP = $_SESSION['shk_purchases']; $curSavedP[$index]['count'] = $plus==true ? $curSavedP[$index]['count']+$count : $count; $_SESSION['shk_purchases'] = $curSavedP; } public function recountDataArrayObjectPlus($object) { $index=$this->getCartIndex($object); $curSavedP = $_SESSION['shk_purchases']; $curSavedP[$index]['count']++; $_SESSION['shk_purchases'] = $curSavedP; } public function recountDataArrayObjectMinus($object) { $index=$this->getCartIndex($object); $curSavedP = $_SESSION['shk_purchases']; $curSavedP[$index]['count']--; if ($curSavedP[$index]['count']>0) { $_SESSION['shk_purchases'] = $curSavedP; } } //Чтобы тестить полученные штуки, предлагаю временно в файлк ajax-action.php внести такое изменение: $request = $_POST; заменить на $request = $_REQUEST; это чисто для удобства чтобы хавать как GET так и POST запросы //ну а теперь в этом же файлике, где стоит свич по действиям добавляем свои действия: case "recountobject": $shopCart->recountDataArrayObject(json_decode($request['object']),$request['count'],false); break; case "plusobject": $shopCart->recountDataArrayObjectPlus(json_decode($request['object'])); break; case "minusobject": $shopCart->recountDataArrayObjectMinus(json_decode($request['object'])); break; //Как работать: //объекту 41 изменили количество на 7 http://site.ru/assets/components/shopkeeper/connector_fe.php?action=recountobject&count=7&object={"id":41}} //а теперь представим, что у нас есть два объекта с одинаковым айдишником в корзине, но с разными атрибутами http://site.ru/assets/components/shopkeeper/connector_fe.php?action=recountobject&count=7&object={"id":42,"tv_add":{"dopps":"big"}} - задали значение позиции с айдишником 42, у которой есть дополнительное поле dopps со значением big (ну например пицца большая/маленькая) //Так же можно поступить формируя объект поиска любой сложности по разным полям. например найти товар с такой то ценой и ему задать какое то количество: http://site.ru/assets/components/shopkeeper/connector_fe.php?action=recountobject&count=7&object={"price":100}