getContext(); $request = $context->getRequest(); try { $arPost = Json::decode($request->getInput()); } catch (Throwable $th) { $arPost = $request->getPostList()->toArray(); $arPost = $GLOBALS['APPLICATION']->ConvertCharsetArray($arPost, 'UTF-8', LANG_CHARSET); } $isDetail = $arPost['IS_DETAIL'] === 'Y'; 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']); } if (empty($arPost['PARAMS'])) { return; } $arPropsTmp = []; foreach ($arPost as $key => $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($isDetail ? 'CHANGE_TITLE_ITEM_DETAIL' : 'CHANGE_TITLE_ITEM_LIST') == 'Y'; $bCompactPriceView = (isset($arPost['PARAMS']['PRICE_VIEW_COMPACT']) && $arPost['PARAMS']['PRICE_VIEW_COMPACT'] == 'Y'); $arAdditionalPriceParams = []; if($bCompactPriceView) { $arAdditionalPriceParams = [ '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 ($isDetail) { $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 ($isDetail && !$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']); // grupper if ($isDetail) { $grupperProps = TSolution\Grupper::get($arPost['SITE_ID']); if ($grupperProps) { $arPost['PARAMS']['PROPERTIES_DISPLAY_TYPE'] = 'TABLE'; if ( ( $grupperProps == 'GRUPPER' && !Loader::includeModule('redsign.grupper') ) || ( $grupperProps == 'WEBDEBUG' && !Loader::includeModule('webdebug.utilities') ) || ( $grupperProps == 'YENISITE_GRUPPER' && !Loader::includeModule('yenisite.infoblockpropsplus') ) ) { $grupperProps = 'NOT'; } } if ( $grupperProps === 'ASPRO_PROPS_GROUP' || $grupperProps === 'NOT' ) { ob_start(); $APPLICATION->IncludeComponent( 'aspro:props.group.'.TSolution::themesSolutionName, '', [ 'DISPLAY_PROPERTIES' => $arItem['OFFER_PROP'], 'IBLOCK_ID' => $arPost['SKU_IBLOCK_ID'], 'MODULE_ID' => TSolution::moduleID, 'SHOW_HINTS' => $arPost['PARAMS']['SHOW_HINTS'], 'OFFERS_MODE' => 'Y', 'PROPERTIES_DISPLAY_TYPE' => $arPost['PARAMS']['PROPERTIES_DISPLAY_TYPE'], ], false, ['HIDE_ICONS' => 'Y'] ); $htmlProps = ob_get_clean(); $arItem['PROPS_GROUP_HTML'] = $htmlProps; } } $arItems[] = $arItem; } ?>