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

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

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

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

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;
            $offerID = $arOffer['ID'];
            $inBasketID = $arItems['PRODUCT_ID'];
        ?>
        <? if ($inBasketID == $offerID){ ?>
            <a href="/personal/order/">Уже в корзине</a>
        <?}else{?>
            <a 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_modifier.php. В карточке товара, находим кнопку "В корзину" и применяем к ней:

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

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

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

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

Просмотров: 9732 | Комментариев: 5
Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Загрузить файл
Нажимая кнопку "Отправить", Вы принимаете условия
Политики конфиденциальности и обработки персональных данных
Рустам Кулиев
&rt;  что за символ ? произошло в коде экранирование у Вас  
Имя Цитировать
Рустам Кулиев
+ не хватает "a" сразу перед открывающим тегом <a
в случае else  
Имя Цитировать
Рустам Кулиев
весь код отдает ошибку синтаксиса касательно


<?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;
                       $offerID = $arOffer['ID'];
                       $inBasketID = $arItems['PRODUCT_ID'];
                         if ($inBasketID == $offerID) { ?>
                           Уже в корзине
                         <?php } else { ?>
                           ">В корзину
           <?php } } ?>
Имя Цитировать
Михаил Базаров
Цитата
Рустам Кулиев написал:
весь код отдает ошибку синтаксиса касательно


<?php if (!empty($arID)) {

Можете подсказать текст ошибки, на какой строчке, что ему не нравится? Сейчас проверить не где, а глазами вроде бы не вижу- куда могла закрасться
Имя Цитировать
Кирилл Зорин
Цитата
Михаил Базаров пишет:
[QUOTE][URL=/club/user/5568/]Рустам Кулиев[/URL] написал:
весь код отдает ошибку синтаксиса касательно


[/QUOTE]
Можете подсказать текст ошибки, на какой строчке, что ему не нравится? Сейчас проверить не где, а глазами вроде бы не вижу- куда могла закрасться
не хватает "}" в конце
Имя Цитировать

Цены на разработку сайта или приложения

Что бы узнать точные стоимость и срок разработки:
достаточно, как можно подробнее, заполнить опросник и выслать на электронную почту info@bazarow.ru.
После ознакомления, смогу задать уточняющие вопросы и оценить.

В стоимость разработки уже включены и не требуют доплат:
  • Лицензия на необходимую редакцию 1С-Битрикс: Управление сайтом и лицензии на дополнительные модули, если требуются для конкретного проекта.
  • Применение технологии композитный сайт: Оптимизация скорости работы проекта под нагрузками.
  • Один год, бесплатной, технической поддержки от 1С-Битрикс
Интернет-магазин от 250 000 рублей
Полно-комплексная разработка интернет-магазина любой сложности. Интеграция с 1С, службами доставки и оплаты. Внутренняя СЕО оптимизация перед запуском.
Сайт компании от 200 000 рублей
Сайт с каталогом товаров или услуг, без функционала магазина. Включает формы обратной связи внутри карточек каталога. Любое количество статичных и динамичных разделов.
Инфоресурс от 200 000 рублей
Портал или доска объявлений с большим количеством разделов. Возможность включения форумов, блогов, регистрации пользователей, внутри сайтовая социальная сеть.
Сайт на готовом решении от 40 000 рублей
Подбор решения из более 200-от готовых сайтов, в соответствии с тематикой бизнеса. Запуск сайта на сервере или хостинге, со всеми настройками. Не большие доработки под задачу.
Мобильное приложение от 200 000 рублей

Кроме сайтов, занимаюсь разработкой мобильных приложений на технологии Apache Cordova. Это полноценные приложения, которые публикуются и распостранияются через официальные магазины GooglePlay и AppStore

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

attention