Компонент служит для оформления заказа на одной странице с использованием технологии AJAX на разных языках.
Данный компонент больше не нуждается в адаптации мультиязычности, так как с версии 2.2.1 все переводы осуществляются на событиях OnSaleComponentOrderJsData и OnSaleComponentOrderResultPrepared модуля sale.
В компоненте предусмотрена возможность переводить платежные системы, службы доставки, свойства заказа и типы покупателей. Данный функционал реализован при помощи языковых файлов, и описан здесь.Подробнее можно озакомиться на странице официальной документации.
В компоненте изменены следующие файлы:- class.php
Code
Copy code
Code copied!
//Выполнено подключение модуля: Loader::includeModule("modulemarket.translator");
Code
Copy code
Code copied!
//Изменена данная функция obtainBasket protected function obtainBasket() { $arResult =& $this->arResult; $arResult["MAX_DIMENSIONS"] = $arResult["ITEMS_DIMENSIONS"] = []; $arResult["BASKET_ITEMS"] = []; $this->calculateBasket = $this->order->getBasket()->createClone(); $discounts = $this->order->getDiscount(); $showPrices = $discounts->getShowPrices(); if (!empty($showPrices['BASKET'])) { foreach ($showPrices['BASKET'] as $basketCode => $data) { $basketItem = $this->calculateBasket->getItemByBasketCode($basketCode); if ($basketItem instanceof Sale\BasketItemBase) { $basketItem->setFieldNoDemand('BASE_PRICE', $data['SHOW_BASE_PRICE']); $basketItem->setFieldNoDemand('PRICE', $data['SHOW_PRICE']); $basketItem->setFieldNoDemand('DISCOUNT_PRICE', $data['SHOW_DISCOUNT']); } } } unset($showPrices); /** @var Sale\BasketItem $basketItem */ foreach ($this->calculateBasket as $basketItem) { $arBasketItem = $basketItem->getFieldValues(); if ($basketItem->getVatRate() > 0) { $arResult["bUsingVat"] = "Y"; $arBasketItem["VAT_VALUE"] = $basketItem->getVat(); } $arBasketItem["QUANTITY"] = $basketItem->getQuantity(); $arBasketItem["PRICE_FORMATED"] = SaleFormatCurrency($basketItem->getPrice(), $this->order->getCurrency()); $arBasketItem["WEIGHT_FORMATED"] = roundEx(doubleval($basketItem->getWeight() / $arResult["WEIGHT_KOEF"]), SALE_WEIGHT_PRECISION)." ".$arResult["WEIGHT_UNIT"]; $arBasketItem["DISCOUNT_PRICE"] = $basketItem->getDiscountPrice(); $arBasketItem["DISCOUNT_PRICE_PERCENT"] = 0; if ($arBasketItem['CUSTOM_PRICE'] != 'Y') { $arBasketItem['DISCOUNT_PRICE_PERCENT'] = Sale\Discount::calculateDiscountPercent( $arBasketItem['BASE_PRICE'], $arBasketItem['DISCOUNT_PRICE'] ); if ($arBasketItem['DISCOUNT_PRICE_PERCENT'] === null) $arBasketItem['DISCOUNT_PRICE_PERCENT'] = 0; } $arBasketItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = $arBasketItem['DISCOUNT_PRICE_PERCENT'].'%'; $arBasketItem["BASE_PRICE_FORMATED"] = SaleFormatCurrency($basketItem->getBasePrice(), $this->order->getCurrency()); $arDim = $basketItem->getField('DIMENSIONS'); if (is_string($arDim)) { $arDim = unserialize($basketItem->getField('DIMENSIONS'), ['allowed_classes' => false]); } if (is_array($arDim)) { $arResult["MAX_DIMENSIONS"] = CSaleDeliveryHelper::getMaxDimensions( [ $arDim["WIDTH"], $arDim["HEIGHT"], $arDim["LENGTH"], ], $arResult["MAX_DIMENSIONS"]); $arResult["ITEMS_DIMENSIONS"][] = $arDim; } $arBasketItem["PROPS"] = []; /** @var Sale\BasketPropertiesCollection $propertyCollection */ $propertyCollection = $basketItem->getPropertyCollection(); $propList = $propertyCollection->getPropertyValues(); foreach ($propList as $key => &$prop) { if ($prop['CODE'] == 'CATALOG.XML_ID' || $prop['CODE'] == 'PRODUCT.XML_ID' || $prop['CODE'] == 'SUM_OF_CHARGE') continue; $prop = array_filter($prop, ["CSaleBasketHelper", "filterFields"]); $arBasketItem["PROPS"][] = $prop; } $this->arElementId[] = $arBasketItem["PRODUCT_ID"]; $arBasketItem["SUM_NUM"] = $basketItem->getPrice() * $basketItem->getQuantity(); $arBasketItem["SUM"] = SaleFormatCurrency( $arBasketItem["SUM_NUM"], $this->order->getCurrency() ); $arBasketItem["SUM_BASE"] = $basketItem->getBasePrice() * $basketItem->getQuantity(); $arBasketItem["SUM_BASE_FORMATED"] = SaleFormatCurrency( $arBasketItem["SUM_BASE"], $this->order->getCurrency() ); $arBasketItem["SUM_DISCOUNT_DIFF"] = $arBasketItem["SUM_BASE"] - $arBasketItem["SUM_NUM"]; $arBasketItem["SUM_DISCOUNT_DIFF_FORMATED"] = SaleFormatCurrency( $arBasketItem["SUM_DISCOUNT_DIFF"], $this->order->getCurrency() ); $arResult["BASKET_ITEMS"][] = $arBasketItem; } //edit_by_Fantych: 15.08.2023 \Modulemarket\Translator\Order\OrderClass::translateBasketItems($arResult["BASKET_ITEMS"]); }
Количество показов: 281
Дата изменения: 02.11.2023 13:56:50