Битрикс — добавление свойства к товару в корзине

21.09.2018  15:17

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

в шаблоне компонента sale.basket.basket




в js
$(document).ready(function(){
	//note cart change
	$(".note textarea").change(function(e){
		var ctxt = $(this).val();
		var cid = $(this).data('id');
		var citem = $(this);
		$.ajax({
			type: "GET",
			url: '/ajax/basket_update.php?id='+cid+'&txt='+ctxt,
			dataType: 'html',
			success: function(result){
				//alert(result);
			}
		});
		// alert(ctxt + ' - ' + cid);
	});
	//note cart change END
});


и самое интересное в файлике /ajax/basket_update.php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog") && CModule::IncludeModule("iblock")){
$ID = intval($_REQUEST['id']);
$txt = $_REQUEST['txt'];
if($ID > 0) {
$db_res = CSaleBasket::GetPropsList(
        array(
                "SORT" => "ASC",
                "NAME" => "ASC"
            ),
        array(
		// "BASKET_ID" => $basketID
		"BASKET_ID" => $ID
		// "ID" => 150669
		)
    );
while ($ar_res = $db_res->Fetch())
{
   //echo $ar_res["NAME"]."=".$ar_res["VALUE"]."
"; if($ar_res["CODE"]=="NOTE") { unset($ar_res["NAME"],$ar_res["CODE"],$ar_res["VALUE"],$ar_res["SORT"]); } else { $newArr[] = array( "NAME" => $ar_res["NAME"], "CODE" => $ar_res["CODE"], "VALUE" => $ar_res["VALUE"], "SORT" => $ar_res["SORT"]); } } $PROPS[] = array( "NAME" => "Примечание", "CODE" => "NOTE", "VALUE" => $txt, "SORT" => "100"); $arFields["PROPS"] = array_merge($newArr,$PROPS); CSaleBasket::Update($ID, $arFields); echo 'ok'; } }


Примечание, заполненное пользователем, попадает в админку в заказы. Если надо чтобы попадало и в письмо о заказе, то костылить свою отправку писем в init.php, но это уже другая история.
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.



перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 48  PHP 60  web-программирование 84  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)