Как это сделать?
|
Как это сделать?
|
|
|
|
|
|
При добавлении, выбрать все товары из корзины, посмотреть есть ли такой уже в корзине или нет, если есть то просто не добавлять).
- эта функция выбирает товары из корзины. |
|
|
|
|
|
Да нет, я наверно не совсем точно выразился.
Добавлять нужно обязательно, у товаров с одним и тем же ID в корзине будут разные свойства. |
|
|
|
|
|
Я смотрю я поднял давно заежжаную тему, и как я понял нормального решения НЕТ.
Судя по форуму эту тему начали обсуждать еще в 2005 году, вот топик - И до сих пор все осталось без изменений??? Николай Гросу Подставлять к ID товара еще какие-то цифры - вариант извращенный (в моем случае). У меня 2 свойства которые товар может иметь в корзине и каждого свойства может быть по 30 значений, придется писать кучу некрасивого "кустарного" кода. |
|
|
|
|
|
Ну это уж кому как удобно, но я не думаю что было оч много мороки.
"PRODUCT_ID" => $arParams['PRODUCT_ID'].Свойство1.Свойство2 хотя это чисто мои голые догадки, на самом деле обычно все гораздо сложнее . Вы правы стандартного решения нет, но мне способ, описанный выше даже очень помог, это хоть какой, но выход , лучшего пока не видел)). |
|
|
|
|
|
Что есть, то есть. Способа лучше я тоже не обнаружил.
Попутный вопрос... Добавляю в корзину с помощью CSaleBasket::Add и товар попадает в массив $arResult["ITEMS"]["nAnCanBuy"] - "Отсутствуют в продаже", все бы ничего в result_modifier.php засовываем этот массив в $arResult["ITEMS"]["AnDelCanBuy"] и отображается в корзине все как надо, НО при добавлении этого же товара его количество не увеличивается. Почему товар попадает в массив "Отсутствуют в продаже"?? Как его положить в нужный массив ($arResult["ITEMS"]["AnDelCanBuy"])??? |
|
|
|
|
|
если не ошибаюсь "CAN_BUY" => "Y", обязательно должно присутствовать в массиве добавляемого в корзину товара.
|
|
|
|
|
|
Стоит такое, не оно.
Какие еще могут быть причины? Почему то в корзине в массиве $arResult у товаров оказывается "CAN_BUY" => "N", что за чудеса? |
|||
|
|
|
|
Вот блин блинский... Количество не добавлялось - это моя ошибка была.
Но вот то что товар ложится в корзину в "Отсутствуют в продаже" - это недопустимо. Из-за этого не работает изменение кол-ва товара в корзине и невозможно оформить заказ. Тут возможно могут помочь callback функции??? Расскажите как они (кэллбэк функции) работают? В документации толком ничего нету про них, в каких файлах они "живут" и как ими пользоваться? ![]() |
|
|
|
|
|
Все получилось, тоже мой косяк был, только так и не понял где.
Про callback функции буду признателен если расскажите, или носом ткните, где про них подробно написано. Чувствую что нужны они мне... |
|
|
|
|
|
тут думаю достаточно расписано про фнкции обратного вызова. Определить ее можно в init.php |
|
|
|
|
|
Николай Гросу спасибо разобрался как они работают.
Но теперь мне непонятен их смысл, например "Функция обратного вызова для поддержки актуальности корзины" - Она вызывается только при добавлении товара в корзину (CSaleBasket::Add), зачем это надо??? Я при добавлении (CSaleBasket::Add) заношу параметры цены, кол-ва и прочие, так я наверно проверяю что заношу в корзину и товары которых нету там не окажутся, это можно делать и без кэллбэк функции. Меня больше интересуют функции или события при нажатии в корзине "Обновить" и "Оформить заказ", подскажите есть ли таковые? |
|
|
|
|
|
из справочги, которую дал
Функция обратного вызова вызывается (если установлена) при каждом чтении корзины для обновления параметров содержащихся в корзине товаров. Например, если после добавления товара в корзину изменилась его цена или товар сняли с продажи, то использование функции обратного вызова позволяет соответственно обновить данные в корзине. Мне пока еще не совсем понятна задача, которую вы хотите решить. Что должно происходить с корзиной товаров при нажатии кнопки обновить в корзине? |
|
|
|
|
|
Ага, разобрался, теперь точно разобрался ). Кароче такая ерунда... указываю callback функцию в CSaleBasket::Add и тогда товар попадает в корзину в "Отсутствуют в продаже", причем не важно есть эта функция в init.php или нет ее. Вот в этом вся и беда.
Моя задача: Нажатие обновить и оформить заказ забыли, мне показалось что callback функция вызывается только при добавлении товара. Она вызывается при каждом просмотре корзины, поэтому актуальность можно поддерживать, это мне и надо было. Осталась единственная проблема, уложить товары нормально в корзину НЕ в "Отсутствуют в продаже". Есть какие нибудь мысли как это сделать? |
|
|
|
|
|
Проблема все еще актуальна...
Если добавляю товар с помощью CSaleBasket::Add и указываю в массиве $arFields параметр CALLBACK_FUNC, то товар попадает в корзину в "Отсутствуют в продаже". Это совсем недопустимо, как быть? |
|
|
|
|
|
Та же самая проблема!
Гуру, подскажите хотя бы в каком направлении копать? |
|
|
|
|
|
Ну подскажите же!! В чём может быть проблема??
Права все выставлены, количество на складе достаточное! Почему товар попадает в "Отсутствуют в продаже"? |
|
|
|
|
|
Я так понимаю, что не работает стандартная функция CatalogBasketCallback?
Её вызов нужно самому прописывать или она вызывается самомтоятельно? |
|
|
|
|
|
Разобралась.
Оказалось, что название стандартной функции в параметрах вызова CSaleBasket::Add указывать не нужно. |
|
|
|
|
|
Возникла аналогичная проблема (как у Татьяны ОСтрецовой, Wincert,...) на редакции Бизнес 9.0. CSaleBasket::Add при изменении типа базовой цены перестал увеличивать количество товаров в корзине, если при добавлении товара не указать цену товара. Данная особенность "затрудняет" работу, если добавлять надо товар без цены. Кто-нибудь сталкивался с подобным ?
|
|
|
|
|
|
Мой код:
$arFields = array( "PRODUCT_ID" => $PRODUCT_ID, "PRODUCT_PRICE_ID" => 0, "PRICE" => 3200, "CURRENCY" => "RUB", "WEIGHT" => 0, "QUANTITY" => 1, "LID" => LANG, "DELAY" => "N", "CAN_BUY" => 'Y', "NAME" => "Чемодан кожаный", "CALLBACK_FUNC" => "", "MODULE" => "catalog", "NOTES" => "", "ORDER_CALLBACK_FUNC" => "", "DETAIL_PAGE_URL" => "/".LANG."/detail.php?ID=51", "FUSER_ID" => CSaleBasket::GetBasketUserID() ;все работает - добавляет в корзину элемент в блок "Готовые к продаже" |
||||
|
|
|
|||