пятница, 10 января 2025 г.

Bitrix / Добавляем в корзину товар, которого нет в каталоге.

ajax запрос...

$(".cartr").on("click", function() {

        $.ajax({

            type: 'POST',

            cache: false,

            url: '/services/cart/',

            data: {item: $(this).closest('.replacement').attr('value')+';'+$(this).closest('.replacement').find(".price").text()},

            success: function (data) {

                $('.basket-line-block-icon-cart').text(data['count']+" позиции");

                $(this).find("path").css('stroke: #836063;');

            }

    });

        return false;

});



Обработка ajax запрос...

/services/cart/index.php

 <?php

require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");

use \Bitrix\Main\Loader;


Loader::includeModule('iblock');

Loader::includeModule('sale');

Loader::includeModule('catalog');


if ((include $_SERVER["DOCUMENT_ROOT"].'/services/include.php') != TRUE) {

    exit;

}


if(isset($_POST['item'])) {

    $json = $_POST['item'];

    header("Content-type: application/json; charset=UTF-8");

    header("Cache-Control: must-revalidate");

    header("Pragma: no-cache");

    header("Expires: -1");

    $arr = explode(';', $json);

    $vowels = array(" ", "₽", " ");

    $siteId = 's1'; // ID сайта, к которому будет привязана корзина

    $basket = \Bitrix\Sale\Basket::create($siteId);


    $item = $basket->createItem('catalog', rand(10000000000, 11000000000));

    $item->setFields([

            'QUANTITY' => '1',

            'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),

            'LID' => Bitrix\Main\Context::getCurrent()->getSite(),

            'NAME' => $arr[0]." / ".$arr[1],

            'PRICE' => ceil(floatval(str_replace($vowels, "", $arr[2]))),

            'CUSTOM_PRICE' => 'Y',

    ]);

    $b = $basket->save();

    $dbRes = \Bitrix\Sale\Basket::getList(

[

'select' => ['NAME', 'QUANTITY'],

'filter' => [

'=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), 

'=ORDER_ID' => null,

'=LID' => \Bitrix\Main\Context::getCurrent()->getSite(),

'=CAN_BUY' => 'Y',

]

]

    );

    $c=0;

    while ($item = $dbRes->fetch())

    {

        $c++;

    }

    print json_encode(array('result' => $b->isSuccess(), 'count' =>  $c, 'user' => \Bitrix\Sale\Fuser::getId()));

}


Split / разбить dump

//Разбить дамп по 50000 строк for i in `ls *.sql`; do split -d -l 50000 -a 4 --additional-suffix=.sql $i "$(basename "$i" .sq...