4 сайта (s1, s2, s3, s4) по системе многосайтовости сделано исключительно для разных языков. товары одни Задача:
|
Cвои компоненты для работы с корзиной и заказами
так получает товары со всех сайтов, но если корзина пустая, то не добавляет в нее товары
$basket = Basket::loadItemsForFUser(Fuser::getId(), ['s1','s2','s3','s4']); |
а так и выводит товары со всех сайтов, и добавляет норм
$basket = Basket::loadItemsForFUser(Fuser::getId(), ['s1','s2','s3','s4']); if(empty($basket->getBasketItems()) ){ $basket = Basket::loadItemsForFUser(Fuser::getId(), SITE_ID); } |
а заказы всегда создаем на сайте основном s1 и скидки подтягиваются
$basket = Basket::loadItemsForFUser(Fuser::getId(), ['s1','s2','s3','s4']); //корзина с товарами на всех сайтах //проверка, что не пустая корзина if (empty($basket->getBasketItems())) LocalRedirect("/"); $order = Order::create('s1', $userId); //s1 - сайт основной $order->setBasket($basket); |
Стандартные компоненты корзины и заказа
для вывода товаров со всех сайтов передать параметр в компоненты
"CUSTOM_SITE_ID" => ['s1','s2','s3','s4'] |
чтобы срабатывали скидки и купоны с основного сайта s1 на всех остальных сайтах (без дублирования скидок)
в ядре поменять
файл /bitrix/modules/sale/lib/discountbase.php
метод loadDiscountList
$currentList = Discount\RuntimeCache\DiscountCache::getInstance()->getDiscounts( $this->discountIds, $this->executeModuleFilter, 's1', //тут, было $this->getSiteId() $couponList?: array() ); |