• Кастомная корзина на Битрикс Стандарт
    Хотите заказать услугу прямо сейчас?

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Лицензия «Стандарт» в 1С-Битрикс не включает стандартные модули интернет-магазина, такие как корзина, оформление заказа, оплата и доставка. В этой статье показано, как реализовать полноценную корзину и оформление заказов с помощью инфоблоков, кастомных компонентов и PHP.

    1. Настройка инфоблоков

    Создаем два инфоблока:

    Каталог товаров

    • Название (string)
    • Артикул (string)
    • Цена (price)
    • Изображение (file)
    • Описание (text)

    Заказы

    • Товары (JSON)
    • Сумма (number)
    • Клиент (string)
    • Email (string)
    • Телефон (string)
    • Статус (string)

    Использование JSON для списка товаров позволяет хранить количество и цену каждого продукта.

    2. Кастомная корзина

    Файл cart.php хранит товары в сессии и позволяет добавлять, удалять и выводить корзину:

    <?php
    session_start();
    
    // Добавление товара
    if($_POST['action'] == 'add') {
        $id = $_POST['product_id'];
        $qty = $_POST['quantity'] ?? 1;
        $_SESSION['cart'][$id] = ($_SESSION['cart'][$id] ?? 0) + $qty;
        echo json_encode(['status'=>'ok','cart'=>$_SESSION['cart']]);
        exit;
    }
    
    // Удаление товара
    if($_POST['action'] == 'remove') {
        $id = $_POST['product_id'];
        unset($_SESSION['cart'][$id]);
        echo json_encode(['status'=>'ok','cart'=>$_SESSION['cart']]);
        exit;
    }
    
    // Вывод корзины
    $cart = $_SESSION['cart'] ?? [];
    $total = 0;
    foreach($cart as $id => $qty){
        $res = CIBlockElement::GetByID($id)->GetNext();
        $total += $res['PROPERTY_PRICE_VALUE'] * $qty;
    }
    echo json_encode(['cart'=>$cart,'total'=>$total]);
    ?>

    3. Компонент оформления заказа

    Файл order.php собирает информацию о клиенте, формирует заказ и сохраняет его в инфоблок:

    <?php
    session_start();
    if($_POST){
        global $USER;
        CModule::IncludeModule("iblock");
    
        $products = $_SESSION['cart'] ?? [];
        if(empty($products)) die(json_encode(['status'=>'error','message'=>'Корзина пуста']));
    
        $el = new CIBlockElement;
        $PROP = [
            "PRODUCTS" => json_encode($products),
            "TOTAL" => $_POST['total'],
            "CLIENT" => $_POST['name'],
            "EMAIL" => $_POST['email'],
            "PHONE" => $_POST['phone'],
            "STATUS" => "Новый"
        ];
    
        $arLoadProductArray = [
            "MODIFIED_BY" => $USER->GetID(),
            "IBLOCK_ID" => 5,
            "NAME" => "Заказ ".date("d.m.Y H:i:s"),
            "PROPERTY_VALUES" => $PROP,
            "ACTIVE" => "Y"
        ];
    
        if($ORDER_ID = $el->Add($arLoadProductArray)){
            unset($_SESSION['cart']);
            echo json_encode(['status'=>'ok','order_id'=>$ORDER_ID]);
        } else {
            echo json_encode(['status'=>'error','message'=>$el->LAST_ERROR]);
        }
    }
    ?>

    4. Фронтенд корзины и оформление заказа

    Простой интерфейс с AJAX позволяет добавлять товары и оформлять заказ:

    <div id="cart"></div>
    <button onclick="checkout()">Оформить заказ</button>
    
    <script>
    function loadCart(){
        fetch('/local/components/custom/cart/cart.php')
        .then(res => res.json())
        .then(data => {
            let html = '';
            for(let id in data.cart){
                html += `<div>Товар ${id} x ${data.cart[id]}</div>`;
            }
            html += `<div>Итого: ${data.total}</div>`;
            document.getElementById('cart').innerHTML = html;
        });
    }
    
    function checkout(){
        const formData = new FormData();
        formData.append('name','Иван Иванов');
        formData.append('email','ivan@mail.ru');
        formData.append('phone','+79991112233');
        formData.append('total',1000);
    
        fetch('/local/components/custom/order/order.php',{
            method:'POST',
            body: formData
        })
        .then(res => res.json())
        .then(data => alert(JSON.stringify(data)));
    }
    
    loadCart();
    </script>

    5. Итоги

    Даже с ограничениями лицензии «Стандарт» можно создать полноценную корзину и оформление заказов, используя инфоблоки, PHP и кастомные компоненты. Такое решение позволяет гибко управлять функционалом магазина и адаптировать его под любые требования.

    Комментарии (0)

    Оставить комментарий

    Кейсы компании

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Посмотреть

    Кастомная система комментариев WordPress с микроразметкой и AJAX

    Посмотреть

    Как создать компонент в Битрикс 1С, который изменяет цену на китайские юани

    Посмотреть

    🎯 Кейс Павлов Студио: как мы внедрили Яндекс SmartCaptcha для защиты всех форм сайта (включая Bitrix)

    Посмотреть

    Разработка онлайн-калькулятора для товаров на сайте wp

    Посмотреть

    Обновление сайта с битрикс 1с с версии php 5.6 до 8.2

    Посмотреть

    Разработка сервиса для сбора информации из соц.сети «Вконтате»

    Посмотреть

    Разработка мега-меню для сайта на wordpress https://doma-penoblok.ru/

    Посмотреть

    Разработка и сопровождение сайта  https://aaa-sitrak.ru/ с последующей интеграцией на 1с-битрикс

    Посмотреть

    Разработка интернет-магазина https://sklad38.ru/ на битрикс 1с

    Посмотреть

    Доработка сайта https://tochka-kontakta.ru/ для организации «Точка Контакта»

    Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!

    Посмотреть
    Max Messenger