Информация о заказах и содержимое корзины текущего пользователя.

В процессе разработки сайта могут понадобиться рецепты приведенные ниже. Использовать можно как угодно и где угодно, я лишь привожу простые примеры. Применимость данных кусочков кода более обширна и зависит от вашей смекалки

Информация о товарах в корзине пользователя

Этот код получает и выводит практически всю информацию, о товарах, которые находятся в корзине текущего пользователя

if (CModule::IncludeModule("sale"))
//Товары в корзине
$arID = array();
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "PRODUCT_PROVIDER_CLASS")
);
while ($arItems = $dbBasketItems->Fetch()) { if ('' != $arItems['PRODUCT_PROVIDER_CLASS'] || '' != $arItems["CALLBACK_FUNC"]) { CSaleBasket::UpdatePrice($arItems["ID"], $arItems["CALLBACK_FUNC"], $arItems["MODULE"], $arItems["PRODUCT_ID"], $arItems["QUANTITY"], "N", $arItems["PRODUCT_PROVIDER_CLASS"] ); $arID[] = $arItems["ID"]; }
}

Пример применения: В карточке товара, нам нужно заменить кнопку "В корзину" на кнопку или ссылку "Уже в корзине"

Размещаем код, представленный выше в result_midifier.php или прямо вверху template.php (в result_midifier.php конечно правильнее)

Находим в templale.php кнопку или ссылку "В корзину" и просто применяем к ней следующий код:

if (!empty($arID)) { $dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "ID" => $arID, "ORDER_ID" => "NULL" ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "DATE_INSERT", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "WEIGHT", "PRODUCT_PROVIDER_CLASS", "NAME") ); while ($arItems = $dbBasketItems->Fetch()) { $arBasketItems[] = $arItems; &rt;? <? $offerID = $arOffer['ID']; $inBasketID = $arItems['PRODUCT_ID']; &rt;? <? if ($inBasketID == $offerID){ ?> < href="/personal/order/"&rt;Уже в корзине</a> <?}else{?> < "href="<? echo $arOffer["BUY_URL"] ?>">В корзину</a>	<?}
}?> 

Небольшие пояснения:
— Сначала получаем всю информацию о корзине пользователя;
$offerID = $arOffer['ID'] и $inBasketID = $arItems['PRODUCT_ID'] присваиваем переменные для товара текущего и товара в корзине;
— Если $inBasketID == $offerID индетификаторы текущего товара и товара в корзине совпадают, то выводим ссылку "Уже в корзине", иначе выводим "В корзину"

Вот так мы проверили, наличие товара в корзине пользователя. Само собой, можете прикручивать AJAX и прочие красивости. Это всего лишь пример.

Информация о заказах пользователя

Следующий пример дает возможность получить все информацию о заказах текущего пользователя. Размещать, также в result_midifier.php

if (CModule::IncludeModule("sale"))
$arFilter = Array( "USER_ID" => $USER->GetID(), );
$db_sales = CSaleOrder::GetList(array(), $arFilter);
while ($ar_sales = $db_sales->Fetch())
{ echo '<pre>'; print_r($ar_sales); echo '</pre>';
}

В выводе print_r($ar_sales) вы получите вообще все данные о заказе, использовать можете любые из них.

Пример применения: Если у пользователя уже есть не оплаченные товары в заказе. Внимание! именно не оплаченные, а не вообще заказы. Мы можем в карточках товаров вывести ему, вместо кнопки "В корзину", кнопку "У вас есть не оплаченные заказы"

Как и в примере выше, размещаем код в result_midifier.php. В карточке товара, находим кнопку "В корзину" и применяем к ней:

<?if ($ar_sales['PAYED'] == 'N') {?>	У вас есть не оплаченные заказы
<?}else{&rt;?	<"href="<? echo $arOffer["BUY_URL"] ?>">В корзину</a>
<?}>

Пояснения:
— Мы проверили наличие товара в заказах со статусом $ar_sales['ОПЛАЧЕН'] == 'НЕТ';
— И вывели соответствующую надпись
— Иначе, если таких (не оплаченных) заказов нет. То выводим кнопку "В корзину"

Само собой, совсем прятать возможность купить товар- не хорошо. Это просто пример. Можете оставить кнопку но при этом и напомнить о наличии не оплаченных товаров, прямо в карточке.

Можете вывести еще и названия не оплаченных товаров, как бы обратить внимание пользователя! И более того, можете скомбинировать с примером выше. Выводить, что данный товар (проверка на наличие в корзине) есть у вас в заказе и не оплачен (проверка на заказ)

Все заметки
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей

Зарегистрироваться Войти
Напомнить пароль

Быстрая регистрация через соц.сеть:

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой.
Политика конфеденциальности