[QUOTE]rcdimon пишет:
У товаров создается новое свойство price2count
[/QUOTE]объясните зачем оно? чет я не пойму... в неё ли забивается 2 цена или количество после которого нужно выводить определённую цену??
К примеру - я так понимаю что если у элемента количество товара больше 20шт. то цена одна если меньше то цена вторая?
Абстрактно...
Скрытый текст |
---|
Не знаю как в идеале, я бы создал 2 'типа цены', из них 1 - базовая розница скажем(меньшее количество), 2 цена скажем(большее количество). При условии в зависимости от свойство 'count' (в котором у нас будут заноситься количество товара после которого нужно поставить опред... цену) сравнивая с 'quantity' (реальным количеством товара на складе) ставим цену на товар для каждого эл. индивидуально. Далее с помощью библиотеке jquery делал запрос к серверу методом POST($post) к созданному php файлу(да в любом месте создайте, назовите как хотите), куда передавал ID элемента, (если есть или нужно количество то, а я как понел нужно) количество товара (там ещё есть подводные камни, условие типо если клиент бы вёл количество больше чем есть на складе и пр...), и в нём бы ещё раз делал проверки по цене типа тех что выше но, немного другой логикой я думаю мысли у нас появились если вы понимаете о чем это я ;) ах да чуть не забыл, функция вызывалась после клика на кнопку купить(javascript:void(0)). |
Пример не ваш, но думаю куда копать вы поймёте наверное
Скрытый текст |
---|
А ещё смотрите подробнее [url=http://dev.1c-bitrix.ru/api_help/sale/classes/csalebasket/csalebasket__add.php]Add2BasketByProductID[/url] Но я бы рекомендовал использовать [url=http://dev.1c-bitrix.ru/api_help/catalog/basket.php]Add2Basket[/url] (если конечно подойдёт под это решение)[CODE]<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if ($_POST["quantity_box"] && $_POST["productid"]){ if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) { $res = CIBlockElement::GetByID($_POST["productid"]);
$db_price = CPrice::GetList( array(), array( "PRODUCT_ID" => $_POST["productid"], "CATALOG_GROUP_ID" => array(1,2), ) ); $sPrice=0; while($ar_price = $db_price->Fetch()){ if($sPrice==0) $sPrice=$ar_price["PRICE"]; elseif($ar_price["PRICE"]<$sPrice) $sPrice=$ar_price["PRICE"]; }
if($ar_res = $res->GetNext()){ $arFields = array( "PRODUCT_ID" => $_POST["productid"], "PRODUCT_PRICE_ID" => 0, "PRICE" => $sPrice, "CURRENCY" => "KZT", "QUANTITY" => $_POST["quantity_box"], "LID" => SITE_ID, "DELAY" => "N", "CAN_BUY" => "Y", "NAME" => $ar_res["NAME"], //"CALLBACK_FUNC" => "MyBasketCallback", //"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback", "MODULE" => "catalog", "NOTES" => "", "DETAIL_PAGE_URL" => $ar_res["DETAIL_PAGE_URL"], "PRODUCT_XML_ID" => $ar_res["XML_ID"], "CATALOG_XML_ID" => $ar_res["IBLOCK_ID"], ); //CSaleBasket::Add($arFields); Add2BasketByProductID($_POST["productid"], 1, $arFields, array()); } } } else { echo "postov net"; } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); ?> [/CODE] |
Надеюсь хоть немного помог, возможно ваще не о том писал :) (а то тут любям некоторые умнить 8) лучше просто поправите если что )
[B]UPD[/B] Спойлеры