13 protected function loadCatalog(
array $skuIds):
array
17 $repositoryFacade = ServiceContainer::getRepositoryFacade();
18 if (!$repositoryFacade)
24 $productSkuIblockMap = [];
25 foreach ($skuIds as $skuId)
27 $sku = $repositoryFacade->loadVariation($skuId);
34 $product = $sku->getParent();
41 $fields[
'PRODUCT_ID'] = $product->getId();
43 $fields[
'OFFERS_IBLOCK_ID'] = 0;
48 $measure = $this->measures[$sku->getField(
'MEASURE')] ??
null;
54 $fields[
'MEASURE_CODE'] = $measure[
'CODE'];
55 $fields[
'MEASURE_NAME'] = $measure[
'SYMBOL'];
57 if (!$product->isSimple())
60 $fields[
'IBLOCK_ID'] = $product->getIblockId();
61 $productSkuIblockMap[$product->getIblockId()] = $productSkuIblockMap[$product->getIblockId()] ?? [];
62 $productSkuIblockMap[$product->getIblockId()][$product->getId()][] = $sku->getId();
65 $productInfo[$skuId] = [
71 if ($productSkuIblockMap)
73 foreach ($productSkuIblockMap as
$iblockId => $productMap)
75 $skuTree = ServiceContainer::make(
'sku.tree', [
'iblockId' =>
$iblockId]);
78 $skuTreeItems = $skuTree->loadJsonOffers($productMap);
79 foreach ($skuTreeItems as $offers)
81 foreach ($offers as $skuId => $skuTreeItem)
83 if (isset($productInfo[$skuId][
'FIELDS']))
85 $productInfo[$skuId][
'FIELDS'][
'SKU_TREE'] = $skuTreeItem;
98 $urlBuilder = BuilderManager::getInstance()->getBuilder($this->arParams[
'BUILDER_CONTEXT']);
105 return $urlBuilder->getElementDetailUrl($skuId);
110 $measureResult = \CCatalogMeasure::getList(
115 [
'CODE',
'SYMBOL_RUS',
'SYMBOL_INTL',
'IS_DEFAULT',
'ID']
118 $this->measures = [];
119 while ($measureFields = $measureResult->Fetch())
122 'ID' => $measureFields[
'ID'],
123 'CODE' => $measureFields[
'CODE'],
124 'IS_DEFAULT' => $measureFields[
'IS_DEFAULT'],
125 'SYMBOL' => $measureFields[
'SYMBOL_RUS'] ?? $measureFields[
'SYMBOL_INTL'],
128 $this->measures[$measureFields[
'ID']] = $measureItem;
137 return \CCatalogMeasure::getDefaultMeasure(
true);
static normalizeArrayValuesByInt(&$map, $sorted=true)