getContext(); $request = $context->getRequest(); try { $arPost = Json::decode($request->getInput()); } catch (\Throwable $th) { $arPost = $request->getPostList()->toArray(); } global $APPLICATION; $arPost = $APPLICATION->ConvertCharsetArray($arPost, 'UTF-8', LANG_CHARSET); if (!strlen($arPost["SITE_ID"])) { $arPost["SITE_ID"] = SITE_ID; } if($arPost["SITE_ID"]){ $dbRes = CSite::GetByID($arPost["SITE_ID"]); $arSite = $dbRes->Fetch(); $arSite['DIR'] = str_replace('//', '/', '/'.$arSite['DIR']); } ?> $value) { if (strpos($key, 'PROP_') !== false) { $arPropsTmp[$key] = $value; } } $arSelectedProps = json_encode($arPropsTmp); if (!$arPost['ADD_PICT_PROP']) { $arPost['ADD_PICT_PROP'] = 'PHOTOS'; } $obSKU = new TSolution\SKU($arPost["PARAMS"]); $obSKU->getTreePropsByFilter([ '=IBLOCK_ID' => $arPost['SKU_IBLOCK_ID'], 'CODE' => $arPost["PARAMS"]['SKU_TREE_PROPS'] ]); /* get liked items */ $arLinkedProp = []; $rsProp = CIBlockElement::GetProperty( $arPost['IBLOCK_ID'], $arPost['ID'], [ "sort" => "asc" ], [ "CODE"=>$arPost['PARAMS']['LINK_SKU_PROP_CODE'] ] ); while ($arProp = $rsProp->fetch()) { if (!$arLinkedProp) { $arLinkedProp = [ 'VALUE' => [$arProp['VALUE']], 'LINK_IBLOCK_ID' => $arProp['LINK_IBLOCK_ID'] ]; } else { $arLinkedProp['VALUE'][] = $arProp['VALUE']; } } /* */ /* get element */ $arElement = \TSolution\Cache::CIBlockElement_GetList( [ "CACHE" => [ "TAG" => \TSolution\Cache::GetIBlockCacheTag($arPost['IBLOCK_ID']), 'MULTI' => 'N' ] ], [ 'ID' => $arPost['ID'], 'ACTIVE' => 'Y' ], false, false, [ 'ID', 'NAME', 'IBLOCK_ID', 'PREVIEW_TEXT', 'PREVIEW_PICTURE', 'DETAIL_TEXT', 'DETAIL_PICTURE', 'DETAIL_PAGE_URL', 'PROPERTY_'.$arPost['ADD_PICT_PROP'], 'PROPERTY_HIT', 'PROPERTY_SALE_TEXT' ] ); if ( ($arElement['DETAIL_PICTURE'] && $arElement['PREVIEW_PICTURE']) || (!$arElement['DETAIL_PICTURE'] && $arElement['PREVIEW_PICTURE']) ) { $arElement['DETAIL_PICTURE'] = $arElement['PREVIEW_PICTURE']; } if ($arElement['PROPERTY_'.$arPost['ADD_PICT_PROP'].'_VALUE']) { $arElement['PROPERTIES'][$arPost['ADD_PICT_PROP']]['PROPERTY_TYPE'] = 'F'; foreach ((array)$arElement['PROPERTY_'.$arPost['ADD_PICT_PROP'].'_VALUE'] as $value) { $arElement['PROPERTIES'][$arPost['ADD_PICT_PROP']]['VALUE'][] = $value; } } // site name postfix $arElement['POSTFIX'] = ''; if ( $arSite && TSolution::GetFrontParametrValue('HIDE_SITE_NAME_TITLE') == 'N' ) { $arElement['POSTFIX'] = ' - '.$arSite['SITE_NAME']; } /* */ $obSKU->setLinkedPropFromArray($arLinkedProp); $obSKU->getItemsByProperty(); $bChangeTitle = TSolution::GetFrontParametrValue($arPost['IS_DETAIL'] === 'Y' ? 'CHANGE_TITLE_ITEM_DETAIL' : 'CHANGE_TITLE_ITEM_LIST') == 'Y'; $bCompactPriceView = (isset($arPost["PARAMS"]['PRICE_VIEW_COMPACT']) && $arPost["PARAMS"]['PRICE_VIEW_COMPACT'] == 'Y'); $arAdditionalPriceParams = array(); if($bCompactPriceView){ $arAdditionalPriceParams = array( 'PRICE_FONT' => 14, 'PRICEOLD_FONT' => 10, 'ECONOMY_FONT' => 9, ); } $arItems = []; foreach ($obSKU->items as $arItem) { if ($arElement['DETAIL_PAGE_URL']) { $arItem['DETAIL_PAGE_URL'] = $arElement['DETAIL_PAGE_URL']; if ($arPost["OID"]) { $arItem['DETAIL_PAGE_URL'] .= '?'.$arPost["OID"].'='.$arItem['ID']; } } $arItem['PRICES_HTML'] = TSolution\Functions::showPrice( array_merge( (array)$arPost['PRICE_PARAMS'], [ 'ITEM' => $arItem, 'SHOW_SCHEMA' => false, 'RETURN' => true, 'CATALOG_IBLOCK_ID' => $arElement['IBLOCK_ID'], 'ITEM_ID' => $arElement['ID'], ], $arAdditionalPriceParams ) ); $arItem['BASKET_HTML'] = TSolution\Functions::showBasketButton( array_merge( (array)$arPost['BASKET_PARAMS'], [ 'ITEM' => $arItem, 'PARAMS' => $obSKU->config, 'ORDER_BTN' => ($arItem["DISPLAY_PROPERTIES"]["FORM_ORDER"]["VALUE_XML_ID"] == "YES"), 'SHOW_COUNTER' => (isset($arPost["PARAMS"]['SHOW_COUNTER']) && $arPost["PARAMS"]['SHOW_COUNTER'] == 'Y'), 'RETURN' => true, ] ) ); if ($arPost['IS_DETAIL'] === 'Y') { $pictureID = $arItem['DETAIL_PICTURE'] ?? $arItem['PREVIEW_PICTURE']; } else { $pictureID = $arItem['PREVIEW_PICTURE'] ?? $arItem['DETAIL_PICTURE']; } if ($pictureID) { $arItem['PICTURE_SRC'] = \CFile::GetPath($pictureID); } else { if ($arElement['PREVIEW_PICTURE']) { $arItem['PREVIEW_PICTURE'] = $arElement['PREVIEW_PICTURE']; } else { if ($arPost['IMG_PARAMS']['NO_IMAGE']) { $arItem['NO_IMAGE'] = $arPost['IMG_PARAMS']['NO_IMAGE']; } $arItem['PICTURE_SRC'] = $arPost['IMG_PARAMS']['NO_IMAGE']['SRC'] ?? TSolution\Product\Image::noImagePath; } } if ($arPost['PARAMS']['SHOW_GALLERY'] === 'Y') { $arItem['GALLERY'] = TSolution\Functions::getSliderForItem([ 'TYPE' => 'catalog_block', 'PROP_CODE' => $arPost['ADD_PICT_PROP'], // 'ADD_DETAIL_SLIDER' => false, 'ITEM' => $arElement, 'PARAMS' => $arParams, ]); if ($pictureID) { $arPicture = \CFile::GetFileArray($pictureID); $alt = $arPicture['DESCRIPTION'] ?: $arPicture['ALT'] ?: ($bChangeTitle ? $arItem['NAME'] : $arElement['NAME']); $title = $arPicture['DESCRIPTION'] ?: $arPicture['TITLE'] ?: ($bChangeTitle ? $arItem['NAME'] : $arElement['NAME']); $arPicture['TITLE'] = $title; $arPicture['ALT'] = $alt; array_unshift($arItem['GALLERY'], $arPicture); } array_splice($arItem['GALLERY'], $arPost['MAX_GALLERY_ITEMS']); $arItem['GALLERY'] = TSolution\Functions::resizeImages($arItem['GALLERY']); if ($arPost['IS_DETAIL'] === 'Y' && !$arItem['GALLERY'] && $arItem['PICTURE_SRC']) { $arItem['GALLERY'][] = [ "SMALL" => ['src' => $arItem['PICTURE_SRC']], "SRC" => $arItem['PICTURE_SRC'], ]; } $arItem['GALLERY_HTML'] = TSolution\Functions::showImage( array_merge( (array)$arPost['IMG_PARAMS'], [ 'ITEM' => $arItem, 'PARAMS' => $arPost['PARAMS'], 'RETURN' => true, 'CATALOG_IBLOCK_ID' => $arElement['IBLOCK_ID'], 'ITEM_ID' => $arElement['ID'], ] ) ); } else { $arItem['ICONS_HTML'] = TSolution\Functions::showSideIcons([ 'ITEM' => $arItem, 'PARAMS' => $arPost['PARAMS'], 'RETURN' => true, 'CATALOG_IBLOCK_ID' => $arElement['IBLOCK_ID'], 'ITEM_ID' => $arElement['ID'], ]); } $arItem['BASKET_JSON'] = \TSolution::getDataItem($arItem, false); if ($arItem['DETAIL_PAGE_URL']) { $arItem['BASKET_JSON']['DETAIL_PAGE_URL'] = $arItem['DETAIL_PAGE_URL']; } $arItem['OFFER_PROP'] = \TSolution::PrepareItemProps($arItem['DISPLAY_PROPERTIES']); $arItems[] = $arItem; }?>