@ -0,0 +1,72 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
$this->setFrameMode(true); |
||||
if (isset($arResult['ITEM'])): |
||||
$productId = $arResult['ITEM']['ID']; |
||||
$priceRow = Bitrix\Catalog\PriceTable::getList([ |
||||
'filter' => [ |
||||
'PRODUCT_ID' => $productId, |
||||
'CATALOG_GROUP_ID' => 1 |
||||
], |
||||
'select' => ['PRICE', 'CURRENCY'] |
||||
])->fetch(); |
||||
$salePrice = $arResult['ITEM']['PROPERTIES']['ATT_OLD_PRICE']['VALUE']; |
||||
$CHEL = $arResult['ITEM']['PROPERTIES']['CHEL']['VALUE']; |
||||
$SBROS_NUM = $arResult['ITEM']['PROPERTIES']['SBROS_NUM']['VALUE']; |
||||
$RECYCLE_VOL = $arResult['ITEM']['PROPERTIES']['RECYCLE_VOL']['VALUE']; |
||||
$reviews = $arResult['ITEM']['PROPERTIES']['REV_COMPLITE']['VALUE']; |
||||
$rating = function_exists('getAverageRating') ? getAverageRating($reviews) : 0; |
||||
?> |
||||
<div class="product"> |
||||
<a class="product__image" href="<?= $arResult['ITEM']['DETAIL_PAGE_URL'] ?>">
|
||||
<img src="<?= $arResult['ITEM']['PREVIEW_PICTURE']['SRC'] ?>" width="336" height="340" alt="<?= $arResult['ITEM']['NAME'] ?>">
|
||||
</a> |
||||
<div class="product__data"> |
||||
<div class="product__rating rating rating--<?= $rating ?>"><?= $rating ?>/5</div>
|
||||
<div class="product__info"> |
||||
<a class="product__title" href="<?= $arResult['ITEM']['DETAIL_PAGE_URL'] ?>">
|
||||
<?= $arResult['ITEM']['NAME'] ?> |
||||
</a> |
||||
<?php if (!empty($arResult['ITEM']['PREVIEW_TEXT'])): ?> |
||||
<p class="product__text"> |
||||
<?= $arResult['ITEM']['PREVIEW_TEXT'] ?> |
||||
</p> |
||||
<?php endif; ?> |
||||
</div> |
||||
<div class="product__info"> |
||||
<?php if (!empty($CHEL)): ?> |
||||
<p class="product__text"> |
||||
Пользователей: <span><?= $CHEL ?></span>
|
||||
</p> |
||||
<?php endif; ?> |
||||
<?php if (!empty($SBROS_NUM)): ?> |
||||
<p class="product__text"> |
||||
Залповый сброс, л: <span><?= $SBROS_NUM ?></span>
|
||||
</p> |
||||
<?php endif; ?> |
||||
<?php if (!empty($RECYCLE_VOL)): ?> |
||||
<p class="product__text"> |
||||
Объем переработки, л/сутки: <span><?= $RECYCLE_VOL ?></span>
|
||||
</p> |
||||
<?php endif; ?> |
||||
</div> |
||||
<?php if (!empty($priceRow['PRICE'])): ?> |
||||
<div class="product__price"> |
||||
<?= number_format($priceRow['PRICE'], 0, '', ' ') ?> ₽
|
||||
</div> |
||||
<?php endif; ?> |
||||
<form class="product__btns add-to-cart-form" action="<?=POST_FORM_ACTION_URI?>" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>" value="1" class="form-control" id="QUANTITY<?= $arResult['ITEM']['ID'] ?>">
|
||||
<input type="hidden" name="<?echo $arParams["ACTION_VARIABLE"]?>" value="ADD2BASKET">
|
||||
<input type="hidden" name="ajax_basket" value="Y"> |
||||
<input type="hidden" name="<?echo $arParams["PRODUCT_ID_VARIABLE"]?>" value="<?= $arResult['ITEM']['ID'] ?>" class="id-offer">
|
||||
<button type="button" class="button button--orange" data-product="<?= $arResult['ITEM']['NAME'] ?>">
|
||||
Купить |
||||
</button> |
||||
<button type="submit" class="button button--outline add-to-cart-button" name="<?echo $arParams["ACTION_VARIABLE"]."ADD2BASKET"?>">
|
||||
Добавить в корзину |
||||
</button> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
<?php endif; ?>
|
@ -0,0 +1,26 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
$this->setFrameMode(true); |
||||
?> |
||||
<?php if (!empty($arResult['ITEMS'])): ?> |
||||
<?php foreach ($arResult['ITEMS'] as $item): ?> |
||||
<?php |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'mainpage', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $this->GetEditAreaId($item['ID']), |
||||
'TYPE' => 'CARD', |
||||
), |
||||
'PARAMS' => $arParams |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
<?php endforeach; ?> |
||||
<?php else: ?> |
||||
<div>Товаров не найдено</div> |
||||
<?php endif; ?> |
@ -0,0 +1,64 @@ |
||||
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
"bitrix:catalog.section", |
||||
"", |
||||
array( |
||||
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], |
||||
"IBLOCK_ID" => $arParams["IBLOCK_ID"], |
||||
"ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"], |
||||
"ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"], |
||||
"PAGE_ELEMENT_COUNT" => $arParams["PAGE_ELEMENT_COUNT"], |
||||
"LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"], |
||||
"PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], |
||||
"OFFERS_CART_PROPERTIES" => $arParams["OFFERS_CART_PROPERTIES"], |
||||
"OFFERS_FIELD_CODE" => $arParams["LIST_OFFERS_FIELD_CODE"], |
||||
"OFFERS_PROPERTY_CODE" => $arParams["LIST_OFFERS_PROPERTY_CODE"], |
||||
"OFFERS_SORT_FIELD" => $arParams["OFFERS_SORT_FIELD"], |
||||
"OFFERS_SORT_ORDER" => $arParams["OFFERS_SORT_ORDER"], |
||||
"OFFERS_LIMIT" => $arParams["LIST_OFFERS_LIMIT"], |
||||
"SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], |
||||
"DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["element"], |
||||
"BASKET_URL" => $arParams["BASKET_URL"], |
||||
"ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"], |
||||
"PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], |
||||
"PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], |
||||
"PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], |
||||
"SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"], |
||||
"CACHE_TYPE" => $arParams["CACHE_TYPE"], |
||||
"CACHE_TIME" => $arParams["CACHE_TIME"], |
||||
"DISPLAY_COMPARE" => $arParams["USE_COMPARE"], |
||||
"PRICE_CODE" => $arParams["PRICE_CODE"], |
||||
"USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"], |
||||
"SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], |
||||
"PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], |
||||
"PRODUCT_PROPERTIES" => $arParams["PRODUCT_PROPERTIES"], |
||||
"USE_PRODUCT_QUANTITY" => $arParams["USE_PRODUCT_QUANTITY"], |
||||
"CONVERT_CURRENCY" => $arParams["CONVERT_CURRENCY"], |
||||
"CURRENCY_ID" => $arParams["CURRENCY_ID"], |
||||
"DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], |
||||
"DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], |
||||
"PAGER_TITLE" => $arParams["PAGER_TITLE"], |
||||
"PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], |
||||
"PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], |
||||
"PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"], |
||||
"PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"], |
||||
"PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"], |
||||
"FILTER_NAME" => "arrFilter", |
||||
"SECTION_ID" => "", |
||||
"SECTION_CODE" => "", |
||||
"SECTION_USER_FIELDS" => array(), |
||||
"INCLUDE_SUBSECTIONS" => "Y", |
||||
"SHOW_ALL_WO_SECTION" => "Y", |
||||
"META_KEYWORDS" => "", |
||||
"META_DESCRIPTION" => "", |
||||
"BROWSER_TITLE" => "", |
||||
"ADD_SECTIONS_CHAIN" => "N", |
||||
"SET_TITLE" => "N", |
||||
"SET_STATUS_404" => "N", |
||||
"CACHE_FILTER" => "N", |
||||
"CACHE_GROUPS" => "N", |
||||
), |
||||
$component |
||||
); |
||||
?> |
@ -0,0 +1,640 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var string $componentPath |
||||
* @var string $componentName |
||||
* @var array $arCurrentValues |
||||
* @var array $arTemplateParameters |
||||
*/ |
||||
|
||||
use Bitrix\Main\Loader; |
||||
use Bitrix\Main\ModuleManager; |
||||
use Bitrix\Main\Web\Json; |
||||
use Bitrix\Iblock; |
||||
|
||||
if (!Loader::includeModule('iblock')) |
||||
return; |
||||
|
||||
$boolCatalog = Loader::includeModule('catalog'); |
||||
CBitrixComponent::includeComponentClass($componentName); |
||||
|
||||
$usePropertyFeatures = Iblock\Model\PropertyFeature::isEnabledFeatures(); |
||||
|
||||
$iblockExists = (!empty($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0); |
||||
|
||||
$defaultValue = array('-' => GetMessage('CP_BCS_TPL_PROP_EMPTY')); |
||||
$arSKU = false; |
||||
$boolSKU = false; |
||||
$filterDataValues = array(); |
||||
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID']))) |
||||
{ |
||||
$arSKU = CCatalogSku::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']); |
||||
$boolSKU = !empty($arSKU) && is_array($arSKU); |
||||
$filterDataValues['iblockId'] = (int)$arCurrentValues['IBLOCK_ID']; |
||||
if ($boolSKU) |
||||
{ |
||||
$filterDataValues['offersIblockId'] = $arSKU['IBLOCK_ID']; |
||||
} |
||||
} |
||||
|
||||
$arThemes = array(); |
||||
if (ModuleManager::isModuleInstalled('bitrix.eshop')) |
||||
{ |
||||
$arThemes['site'] = GetMessage('CP_BCS_TPL_THEME_SITE'); |
||||
} |
||||
|
||||
$arThemesList = array( |
||||
'blue' => GetMessage('CP_BCS_TPL_THEME_BLUE'), |
||||
'green' => GetMessage('CP_BCS_TPL_THEME_GREEN'), |
||||
'red' => GetMessage('CP_BCS_TPL_THEME_RED'), |
||||
'yellow' => GetMessage('CP_BCS_TPL_THEME_YELLOW') |
||||
); |
||||
$dir = trim(preg_replace("'[\\\\/]+'", '/', __DIR__.'/themes/')); |
||||
if (is_dir($dir)) |
||||
{ |
||||
foreach ($arThemesList as $themeID => $themeName) |
||||
{ |
||||
if (!is_file($dir.$themeID.'/style.css')) |
||||
continue; |
||||
|
||||
$arThemes[$themeID] = $themeName; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['TEMPLATE_THEME'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_TEMPLATE_THEME'), |
||||
'TYPE' => 'LIST', |
||||
'VALUES' => $arThemes, |
||||
'DEFAULT' => 'blue', |
||||
'ADDITIONAL_VALUES' => 'Y' |
||||
); |
||||
|
||||
$lineElementCount = (int)($arCurrentValues['LINE_ELEMENT_COUNT'] ?? 3); |
||||
$pageElementCount = (int)($arCurrentValues['PAGE_ELEMENT_COUNT'] ?? 18); |
||||
|
||||
$arTemplateParameters['PRODUCT_ROW_VARIANTS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ROW_VARIANTS'), |
||||
'TYPE' => 'CUSTOM', |
||||
'BIG_DATA' => \Bitrix\Main\Analytics\Catalog::isOn() ? 'Y' : 'N', |
||||
'COUNT_PARAM_NAME' => 'PAGE_ELEMENT_COUNT', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_add'), |
||||
'JS_EVENT' => 'initDraggableAddControl', |
||||
'JS_MESSAGES' => Json::encode(array( |
||||
'variant' => GetMessage('CP_BCS_TPL_SETTINGS_VARIANT'), |
||||
'delete' => GetMessage('CP_BCS_TPL_SETTINGS_DELETE'), |
||||
'quantity' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY'), |
||||
'quantityBigData' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA') |
||||
)), |
||||
'JS_DATA' => Json::encode(CatalogSectionComponent::getTemplateVariantsMap()), |
||||
'DEFAULT' => Json::encode(CatalogSectionComponent::predictRowVariants($lineElementCount, $pageElementCount)) |
||||
); |
||||
|
||||
$arTemplateParameters['ENLARGE_PRODUCT'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N', |
||||
'VALUES' => array( |
||||
'STRICT' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_STRICT'), |
||||
'PROP' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_PROP') |
||||
) |
||||
); |
||||
|
||||
$arTemplateParameters['PRODUCT_BLOCKS_ORDER'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCKS_ORDER'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_order'), |
||||
'JS_EVENT' => 'initDraggableOrderControl', |
||||
'JS_DATA' => Json::encode(array( |
||||
'price' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PRICE'), |
||||
'quantityLimit' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT'), |
||||
'quantity' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY'), |
||||
'buttons' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS'), |
||||
'props' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PROPS'), |
||||
'sku' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_SKU') |
||||
)), |
||||
'DEFAULT' => 'price,props,sku,quantityLimit,quantity,buttons' |
||||
); |
||||
|
||||
$arTemplateParameters['SHOW_SLIDER'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_SLIDER'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'Y' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_SLIDER']) && $arCurrentValues['SHOW_SLIDER'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['SLIDER_INTERVAL'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_INTERVAL'), |
||||
'TYPE' => 'TEXT', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '3000' |
||||
); |
||||
$arTemplateParameters['SLIDER_PROGRESS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_PROGRESS'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
} |
||||
|
||||
$arAllPropList = array(); |
||||
$arFilePropList = $defaultValue; |
||||
$arListPropList = array(); |
||||
|
||||
if ($iblockExists) |
||||
{ |
||||
$rsProps = CIBlockProperty::GetList( |
||||
array('SORT' => 'ASC', 'ID' => 'ASC'), |
||||
array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y') |
||||
); |
||||
while ($arProp = $rsProps->Fetch()) |
||||
{ |
||||
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME']; |
||||
|
||||
if ($arProp['CODE'] == '') |
||||
{ |
||||
$arProp['CODE'] = $arProp['ID']; |
||||
} |
||||
|
||||
$arAllPropList[$arProp['CODE']] = $strPropName; |
||||
|
||||
if ($arProp['PROPERTY_TYPE'] === 'F') |
||||
{ |
||||
$arFilePropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
|
||||
if ($arProp['PROPERTY_TYPE'] === 'L') |
||||
{ |
||||
$arListPropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
} |
||||
|
||||
$showedProperties = []; |
||||
if ($usePropertyFeatures) |
||||
{ |
||||
if ($iblockExists) |
||||
{ |
||||
$showedProperties = Iblock\Model\PropertyFeature::getListPageShowPropertyCodes( |
||||
$arCurrentValues['IBLOCK_ID'], |
||||
['CODE' => 'Y'] |
||||
); |
||||
if ($showedProperties === null) |
||||
$showedProperties = []; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (!empty($arCurrentValues['PROPERTY_CODE']) && is_array($arCurrentValues['PROPERTY_CODE'])) |
||||
{ |
||||
$showedProperties = $arCurrentValues['PROPERTY_CODE']; |
||||
} |
||||
} |
||||
if (!empty($showedProperties)) |
||||
{ |
||||
$selected = array(); |
||||
|
||||
foreach ($showedProperties as $code) |
||||
{ |
||||
if (isset($arAllPropList[$code])) |
||||
{ |
||||
$selected[$code] = $arAllPropList[$code]; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['PROPERTY_CODE_MOBILE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PROPERTY_CODE_MOBILE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'VALUES' => $selected |
||||
); |
||||
} |
||||
unset($showedProperties); |
||||
|
||||
if (isset($arCurrentValues['ENLARGE_PRODUCT']) && $arCurrentValues['ENLARGE_PRODUCT'] === 'PROP') |
||||
{ |
||||
$arTemplateParameters['ENLARGE_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $defaultValue + $arListPropList |
||||
); |
||||
} |
||||
|
||||
if ($boolSKU) |
||||
{ |
||||
$arTemplateParameters['PRODUCT_DISPLAY_MODE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_DISPLAY_MODE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N', |
||||
'VALUES' => array( |
||||
'N' => GetMessage('CP_BCS_TPL_DML_SIMPLE'), |
||||
'Y' => GetMessage('CP_BCS_TPL_DML_EXT') |
||||
) |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['ADD_PICT_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ADD_PICT_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arFilePropList |
||||
); |
||||
|
||||
$arTemplateParameters['LABEL_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'VALUES' => $arListPropList |
||||
); |
||||
|
||||
if (isset($arCurrentValues['LABEL_PROP']) && !empty($arCurrentValues['LABEL_PROP'])) |
||||
{ |
||||
if (!is_array($arCurrentValues['LABEL_PROP'])) |
||||
{ |
||||
$arCurrentValues['LABEL_PROP'] = array($arCurrentValues['LABEL_PROP']); |
||||
} |
||||
|
||||
$selected = array(); |
||||
foreach ($arCurrentValues['LABEL_PROP'] as $name) |
||||
{ |
||||
if (isset($arListPropList[$name])) |
||||
{ |
||||
$selected[$name] = $arListPropList[$name]; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['LABEL_PROP_MOBILE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_MOBILE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'VALUES' => $selected |
||||
); |
||||
unset($selected); |
||||
|
||||
$arTemplateParameters['LABEL_PROP_POSITION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_POSITION'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'), |
||||
'JS_EVENT' => 'initPositionControl', |
||||
'JS_DATA' => Json::encode( |
||||
array( |
||||
'positions' => array( |
||||
'top-left', 'top-center', 'top-right', |
||||
'middle-left', 'middle-center', 'middle-right', |
||||
'bottom-left', 'bottom-center', 'bottom-right' |
||||
), |
||||
'className' => '' |
||||
) |
||||
), |
||||
'DEFAULT' => 'top-left' |
||||
); |
||||
} |
||||
|
||||
if ($boolSKU && isset($arCurrentValues['PRODUCT_DISPLAY_MODE']) && 'Y' == $arCurrentValues['PRODUCT_DISPLAY_MODE']) |
||||
{ |
||||
$arAllOfferPropList = array(); |
||||
$arFileOfferPropList = $arTreeOfferPropList = $defaultValue; |
||||
$rsProps = CIBlockProperty::GetList( |
||||
array('SORT' => 'ASC', 'ID' => 'ASC'), |
||||
array('IBLOCK_ID' => $arSKU['IBLOCK_ID'], 'ACTIVE' => 'Y') |
||||
); |
||||
while ($arProp = $rsProps->Fetch()) |
||||
{ |
||||
if ($arProp['ID'] == $arSKU['SKU_PROPERTY_ID']) |
||||
continue; |
||||
$arProp['USER_TYPE'] = (string)$arProp['USER_TYPE']; |
||||
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME']; |
||||
if ('' == $arProp['CODE']) |
||||
$arProp['CODE'] = $arProp['ID']; |
||||
$arAllOfferPropList[$arProp['CODE']] = $strPropName; |
||||
if ('F' == $arProp['PROPERTY_TYPE']) |
||||
$arFileOfferPropList[$arProp['CODE']] = $strPropName; |
||||
if ('N' != $arProp['MULTIPLE']) |
||||
continue; |
||||
if ( |
||||
'L' == $arProp['PROPERTY_TYPE'] |
||||
|| 'E' == $arProp['PROPERTY_TYPE'] |
||||
|| ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp)) |
||||
) |
||||
$arTreeOfferPropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
$arTemplateParameters['OFFER_ADD_PICT_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_OFFER_ADD_PICT_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arFileOfferPropList |
||||
); |
||||
if (!$usePropertyFeatures) |
||||
{ |
||||
$arTemplateParameters['OFFER_TREE_PROPS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_OFFER_TREE_PROPS'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arTreeOfferPropList |
||||
); |
||||
} |
||||
} |
||||
} |
||||
|
||||
if ($boolCatalog) |
||||
{ |
||||
$arTemplateParameters['PRODUCT_SUBSCRIPTION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_SUBSCRIPTION'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'Y' |
||||
); |
||||
$arTemplateParameters['SHOW_DISCOUNT_PERCENT'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_DISCOUNT_PERCENT'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_DISCOUNT_PERCENT']) && $arCurrentValues['SHOW_DISCOUNT_PERCENT'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['DISCOUNT_PERCENT_POSITION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_DISCOUNT_PERCENT_POSITION'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'), |
||||
'JS_EVENT' => 'initPositionControl', |
||||
'JS_DATA' => Json::encode( |
||||
array( |
||||
'positions' => array( |
||||
'top-left', 'top-center', 'top-right', |
||||
'middle-left', 'middle-center', 'middle-right', |
||||
'bottom-left', 'bottom-center', 'bottom-right' |
||||
), |
||||
'className' => 'bx-pos-parameter-block-circle' |
||||
) |
||||
), |
||||
'DEFAULT' => 'bottom-right' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['SHOW_OLD_PRICE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_OLD_PRICE'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
$arTemplateParameters['SHOW_MAX_QUANTITY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY'), |
||||
'TYPE' => 'LIST', |
||||
'REFRESH' => 'Y', |
||||
'MULTIPLE' => 'N', |
||||
'VALUES' => array( |
||||
'N' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_N'), |
||||
'Y' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_Y'), |
||||
'M' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_M') |
||||
), |
||||
'DEFAULT' => array('N'), |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_MAX_QUANTITY'])) |
||||
{ |
||||
if ($arCurrentValues['SHOW_MAX_QUANTITY'] !== 'N') |
||||
{ |
||||
$arTemplateParameters['MESS_SHOW_MAX_QUANTITY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT') |
||||
); |
||||
} |
||||
|
||||
if ($arCurrentValues['SHOW_MAX_QUANTITY'] === 'M') |
||||
{ |
||||
$arTemplateParameters['RELATIVE_QUANTITY_FACTOR'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => '5' |
||||
); |
||||
$arTemplateParameters['MESS_RELATIVE_QUANTITY_MANY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_RELATIVE_QUANTITY_FEW'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT') |
||||
); |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['ADD_TO_BASKET_ACTION'] = array( |
||||
'PARENT' => 'BASKET', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ADD_TO_BASKET_ACTION'), |
||||
'TYPE' => 'LIST', |
||||
'VALUES' => array( |
||||
'ADD' => GetMessage('ADD_TO_BASKET_ACTION_ADD'), |
||||
'BUY' => GetMessage('ADD_TO_BASKET_ACTION_BUY') |
||||
), |
||||
'DEFAULT' => 'ADD', |
||||
'REFRESH' => 'N' |
||||
); |
||||
$arTemplateParameters['SHOW_CLOSE_POPUP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_CLOSE_POPUP'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N', |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['MESS_BTN_BUY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY_DEFAULT') |
||||
); |
||||
|
||||
$arTemplateParameters['LAZY_LOAD'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LAZY_LOAD'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
$arTemplateParameters['MESS_BTN_LAZY_LOAD'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD'), |
||||
'TYPE' => 'TEXT', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT'), |
||||
'HIDDEN' => (isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y' ? 'N' : 'Y') |
||||
); |
||||
|
||||
$arTemplateParameters['LOAD_ON_SCROLL'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LOAD_ON_SCROLL'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N', |
||||
'HIDDEN' => ( |
||||
(isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y') |
||||
|| (isset($arCurrentValues['DISPLAY_TOP_PAGER']) && $arCurrentValues['DISPLAY_TOP_PAGER'] === 'Y') |
||||
|| (!isset($arCurrentValues['DISPLAY_BOTTOM_PAGER']) || $arCurrentValues['DISPLAY_BOTTOM_PAGER'] !== 'N') |
||||
? 'N' |
||||
: 'Y' |
||||
) |
||||
); |
||||
|
||||
$arTemplateParameters['MESS_BTN_ADD_TO_BASKET'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_BTN_SUBSCRIBE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT') |
||||
); |
||||
|
||||
if (isset($arCurrentValues['DISPLAY_COMPARE']) && $arCurrentValues['DISPLAY_COMPARE'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['MESS_BTN_COMPARE'] = array( |
||||
'PARENT' => 'COMPARE', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT') |
||||
); |
||||
$arTemplateParameters['COMPARE_NAME'] = array( |
||||
'PARENT' => 'COMPARE', |
||||
'NAME' => GetMessage('CP_BCS_TPL_COMPARE_NAME'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => 'CATALOG_COMPARE_LIST' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['MESS_BTN_DETAIL'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_NOT_AVAILABLE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_NOT_AVAILABLE_SERVICE'] = [ |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'), |
||||
]; |
||||
|
||||
if (\Bitrix\Main\Analytics\Catalog::isOn()) |
||||
{ |
||||
$arTemplateParameters['RCM_TYPE'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_TYPE_TITLE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'VALUES' => array( |
||||
// personal |
||||
'personal' => GetMessage('CP_BCS_TPL_PERSONAL'), |
||||
// general |
||||
'bestsell' => GetMessage('CP_BCS_TPL_BESTSELLERS'), |
||||
// item2item |
||||
'similar_sell' => GetMessage('CP_BCS_TPL_SOLD_WITH'), |
||||
'similar_view' => GetMessage('CP_BCS_TPL_VIEWED_WITH'), |
||||
'similar' => GetMessage('CP_BCS_TPL_SIMILAR'), |
||||
// randomly distributed |
||||
'any_similar' => GetMessage('CP_BCS_TPL_SIMILAR_ANY'), |
||||
'any_personal' => GetMessage('CP_BCS_TPL_PERSONAL_WBEST'), |
||||
'any' => GetMessage('CP_BCS_TPL_RAND') |
||||
), |
||||
'DEFAULT' => 'personal' |
||||
); |
||||
$arTemplateParameters['RCM_PROD_ID'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ID_PARAM'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => '={$_REQUEST["PRODUCT_ID"]}' |
||||
); |
||||
$arTemplateParameters['SHOW_FROM_SECTION'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_FROM_SECTION'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['USE_ENHANCED_ECOMMERCE'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_USE_ENHANCED_ECOMMERCE'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['USE_ENHANCED_ECOMMERCE']) && $arCurrentValues['USE_ENHANCED_ECOMMERCE'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['DATA_LAYER_NAME'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_DATA_LAYER_NAME'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => 'dataLayer' |
||||
); |
||||
$arTemplateParameters['BRAND_PROPERTY'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_BRAND_PROPERTY'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'DEFAULT' => '', |
||||
'VALUES' => $defaultValue + $arAllPropList |
||||
); |
||||
} |
@ -0,0 +1,63 @@ |
||||
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var array $arParams |
||||
* @var array $templateData |
||||
* @var string $templateFolder |
||||
* @var CatalogSectionComponent $component |
||||
*/ |
||||
|
||||
global $APPLICATION; |
||||
|
||||
if (isset($templateData['TEMPLATE_THEME'])) |
||||
{ |
||||
$APPLICATION->SetAdditionalCSS($templateFolder.'/themes/'.$templateData['TEMPLATE_THEME'].'/style.css'); |
||||
$APPLICATION->SetAdditionalCSS('/bitrix/css/main/themes/'.$templateData['TEMPLATE_THEME'].'/style.css', true); |
||||
} |
||||
|
||||
if (!empty($templateData['TEMPLATE_LIBRARY'])) |
||||
{ |
||||
$loadCurrency = false; |
||||
if (!empty($templateData['CURRENCIES'])) |
||||
{ |
||||
$loadCurrency = \Bitrix\Main\Loader::includeModule('currency'); |
||||
} |
||||
|
||||
CJSCore::Init($templateData['TEMPLATE_LIBRARY']); |
||||
|
||||
if ($loadCurrency) |
||||
{ |
||||
?> |
||||
<script> |
||||
BX.Currency.setCurrencies(<?=$templateData['CURRENCIES']?>);
|
||||
</script> |
||||
<? |
||||
} |
||||
} |
||||
|
||||
// lazy load and big data json answers |
||||
$request = \Bitrix\Main\Context::getCurrent()->getRequest(); |
||||
if ($request->isAjaxRequest() && ($request->get('action') === 'showMore' || $request->get('action') === 'deferredLoad')) |
||||
{ |
||||
$content = ob_get_contents(); |
||||
ob_end_clean(); |
||||
|
||||
[, $itemsContainer] = explode('<!-- items-container -->', $content); |
||||
$paginationContainer = ''; |
||||
if ($templateData['USE_PAGINATION_CONTAINER']) |
||||
{ |
||||
[, $paginationContainer] = explode('<!-- pagination-container -->', $content); |
||||
} |
||||
[, $epilogue] = explode('<!-- component-end -->', $content); |
||||
|
||||
if (isset($arParams['AJAX_MODE']) && $arParams['AJAX_MODE'] === 'Y') |
||||
{ |
||||
$component->prepareLinks($paginationContainer); |
||||
} |
||||
|
||||
$component::sendJsonAnswer(array( |
||||
'items' => $itemsContainer, |
||||
'pagination' => $paginationContainer, |
||||
'epilogue' => $epilogue, |
||||
)); |
||||
} |
@ -0,0 +1,107 @@ |
||||
<? |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); |
||||
|
||||
if (!function_exists('getDoublePicturesForItem')) |
||||
{ |
||||
function getDoublePicturesForItem(&$item, $propertyCode) |
||||
{ |
||||
$result = array( |
||||
'PICT' => false, |
||||
'SECOND_PICT' => false |
||||
); |
||||
|
||||
if (!empty($item) && is_array($item)) |
||||
{ |
||||
if (!empty($item['PREVIEW_PICTURE'])) |
||||
{ |
||||
if (!is_array($item['PREVIEW_PICTURE'])) |
||||
$item['PREVIEW_PICTURE'] = CFile::GetFileArray($item['PREVIEW_PICTURE']); |
||||
if (isset($item['PREVIEW_PICTURE']['ID'])) |
||||
{ |
||||
$result['PICT'] = array( |
||||
'ID' => intval($item['PREVIEW_PICTURE']['ID']), |
||||
'SRC' => $item['PREVIEW_PICTURE']['SRC'], |
||||
'WIDTH' => intval($item['PREVIEW_PICTURE']['WIDTH']), |
||||
'HEIGHT' => intval($item['PREVIEW_PICTURE']['HEIGHT']) |
||||
); |
||||
} |
||||
} |
||||
if (!empty($item['DETAIL_PICTURE'])) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
if (!is_array($item['DETAIL_PICTURE'])) |
||||
$item['DETAIL_PICTURE'] = CFile::GetFileArray($item['DETAIL_PICTURE']); |
||||
if (isset($item['DETAIL_PICTURE']['ID'])) |
||||
{ |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($item['DETAIL_PICTURE']['ID']), |
||||
'SRC' => $item['DETAIL_PICTURE']['SRC'], |
||||
'WIDTH' => intval($item['DETAIL_PICTURE']['WIDTH']), |
||||
'HEIGHT' => intval($item['DETAIL_PICTURE']['HEIGHT']) |
||||
); |
||||
} |
||||
} |
||||
if (empty($result['SECOND_PICT'])) |
||||
{ |
||||
if ( |
||||
'' != $propertyCode && |
||||
isset($item['PROPERTIES'][$propertyCode]) && |
||||
'F' == $item['PROPERTIES'][$propertyCode]['PROPERTY_TYPE'] |
||||
) |
||||
{ |
||||
if ( |
||||
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) && |
||||
!empty($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) |
||||
) |
||||
{ |
||||
$fileValues = ( |
||||
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']['ID']) ? |
||||
array(0 => $item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) : |
||||
$item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE'] |
||||
); |
||||
foreach ($fileValues as &$oneFileValue) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($oneFileValue['ID']), |
||||
'SRC' => $oneFileValue['SRC'], |
||||
'WIDTH' => intval($oneFileValue['WIDTH']), |
||||
'HEIGHT' => intval($oneFileValue['HEIGHT']) |
||||
); |
||||
if ('SECOND_PICT' == $keyPict) |
||||
break; |
||||
} |
||||
if (isset($oneFileValue)) |
||||
unset($oneFileValue); |
||||
} |
||||
else |
||||
{ |
||||
$propValues = $item['PROPERTIES'][$propertyCode]['VALUE']; |
||||
if (!is_array($propValues)) |
||||
$propValues = array($propValues); |
||||
foreach ($propValues as &$oneValue) |
||||
{ |
||||
$oneFileValue = CFile::GetFileArray($oneValue); |
||||
if (isset($oneFileValue['ID'])) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($oneFileValue['ID']), |
||||
'SRC' => $oneFileValue['SRC'], |
||||
'WIDTH' => intval($oneFileValue['WIDTH']), |
||||
'HEIGHT' => intval($oneFileValue['HEIGHT']) |
||||
); |
||||
if ('SECOND_PICT' == $keyPict) |
||||
break; |
||||
} |
||||
} |
||||
if (isset($oneValue)) |
||||
unset($oneValue); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return $result; |
||||
} |
||||
} |
||||
?> |
@ -0,0 +1,9 @@ |
||||
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var CatalogSectionComponent $component |
||||
*/ |
||||
|
||||
$component = $this->getComponent(); |
||||
$arParams = $component->applyTemplateModifications(); |
@ -0,0 +1,359 @@ |
||||
(function() { |
||||
'use strict'; |
||||
|
||||
if (!!window.JCCatalogSectionComponent) |
||||
return; |
||||
|
||||
window.JCCatalogSectionComponent = function(params) { |
||||
this.formPosting = false; |
||||
this.siteId = params.siteId || ''; |
||||
this.ajaxId = params.ajaxId || ''; |
||||
this.template = params.template || ''; |
||||
this.componentPath = params.componentPath || ''; |
||||
this.parameters = params.parameters || ''; |
||||
|
||||
if (params.navParams) |
||||
{ |
||||
this.navParams = { |
||||
NavNum: params.navParams.NavNum || 1, |
||||
NavPageNomer: parseInt(params.navParams.NavPageNomer) || 1, |
||||
NavPageCount: parseInt(params.navParams.NavPageCount) || 1 |
||||
}; |
||||
} |
||||
|
||||
this.bigData = params.bigData || {enabled: false}; |
||||
this.container = document.querySelector('[data-entity="' + params.container + '"]'); |
||||
this.showMoreButton = null; |
||||
this.showMoreButtonMessage = null; |
||||
|
||||
if (this.bigData.enabled && BX.util.object_keys(this.bigData.rows).length > 0) |
||||
{ |
||||
BX.cookie_prefix = this.bigData.js.cookiePrefix || ''; |
||||
BX.cookie_domain = this.bigData.js.cookieDomain || ''; |
||||
BX.current_server_time = this.bigData.js.serverTime; |
||||
|
||||
BX.ready(BX.delegate(this.bigDataLoad, this)); |
||||
} |
||||
|
||||
if (params.initiallyShowHeader) |
||||
{ |
||||
BX.ready(BX.delegate(this.showHeader, this)); |
||||
} |
||||
|
||||
if (params.deferredLoad) |
||||
{ |
||||
BX.ready(BX.delegate(this.deferredLoad, this)); |
||||
} |
||||
|
||||
if (params.lazyLoad) |
||||
{ |
||||
this.showMoreButton = document.querySelector('[data-use="show-more-' + this.navParams.NavNum + '"]'); |
||||
this.showMoreButtonMessage = this.showMoreButton.innerHTML; |
||||
BX.bind(this.showMoreButton, 'click', BX.proxy(this.showMore, this)); |
||||
} |
||||
|
||||
if (params.loadOnScroll) |
||||
{ |
||||
BX.bind(window, 'scroll', BX.proxy(this.loadOnScroll, this)); |
||||
} |
||||
}; |
||||
|
||||
window.JCCatalogSectionComponent.prototype = |
||||
{ |
||||
checkButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
if (this.navParams.NavPageNomer == this.navParams.NavPageCount) |
||||
{ |
||||
BX.remove(this.showMoreButton); |
||||
} |
||||
else |
||||
{ |
||||
this.container.appendChild(this.showMoreButton); |
||||
} |
||||
} |
||||
}, |
||||
|
||||
enableButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
BX.removeClass(this.showMoreButton, 'disabled'); |
||||
this.showMoreButton.innerHTML = this.showMoreButtonMessage; |
||||
} |
||||
}, |
||||
|
||||
disableButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
BX.addClass(this.showMoreButton, 'disabled'); |
||||
this.showMoreButton.innerHTML = BX.message('BTN_MESSAGE_LAZY_LOAD_WAITER'); |
||||
} |
||||
}, |
||||
|
||||
loadOnScroll: function() |
||||
{ |
||||
var scrollTop = BX.GetWindowScrollPos().scrollTop, |
||||
containerBottom = BX.pos(this.container).bottom; |
||||
|
||||
if (scrollTop + window.innerHeight > containerBottom) |
||||
{ |
||||
this.showMore(); |
||||
} |
||||
}, |
||||
|
||||
showMore: function() |
||||
{ |
||||
if (this.navParams.NavPageNomer < this.navParams.NavPageCount) |
||||
{ |
||||
var data = {}; |
||||
data['action'] = 'showMore'; |
||||
data['PAGEN_' + this.navParams.NavNum] = this.navParams.NavPageNomer + 1; |
||||
|
||||
if (!this.formPosting) |
||||
{ |
||||
this.formPosting = true; |
||||
this.disableButton(); |
||||
this.sendRequest(data); |
||||
} |
||||
} |
||||
}, |
||||
|
||||
bigDataLoad: function() |
||||
{ |
||||
var url = 'https://analytics.bitrix.info/crecoms/v1_0/recoms.php', |
||||
data = BX.ajax.prepareData(this.bigData.params); |
||||
|
||||
if (data) |
||||
{ |
||||
url += (url.indexOf('?') !== -1 ? '&' : '?') + data; |
||||
} |
||||
|
||||
var onReady = BX.delegate(function(result){ |
||||
this.sendRequest({ |
||||
action: 'deferredLoad', |
||||
bigData: 'Y', |
||||
items: result && result.items || [], |
||||
rid: result && result.id, |
||||
count: this.bigData.count, |
||||
rowsRange: this.bigData.rowsRange, |
||||
shownIds: this.bigData.shownIds |
||||
}); |
||||
}, this); |
||||
|
||||
BX.ajax({ |
||||
method: 'GET', |
||||
dataType: 'json', |
||||
url: url, |
||||
timeout: 3, |
||||
onsuccess: onReady, |
||||
onfailure: onReady |
||||
}); |
||||
}, |
||||
|
||||
deferredLoad: function() |
||||
{ |
||||
this.sendRequest({action: 'deferredLoad'}); |
||||
}, |
||||
|
||||
sendRequest: function(data) |
||||
{ |
||||
var defaultData = { |
||||
siteId: this.siteId, |
||||
template: this.template, |
||||
parameters: this.parameters |
||||
}; |
||||
|
||||
if (this.ajaxId) |
||||
{ |
||||
defaultData.AJAX_ID = this.ajaxId; |
||||
} |
||||
|
||||
BX.ajax({ |
||||
url: this.componentPath + '/ajax.php' + (document.location.href.indexOf('clear_cache=Y') !== -1 ? '?clear_cache=Y' : ''), |
||||
method: 'POST', |
||||
dataType: 'json', |
||||
timeout: 60, |
||||
data: BX.merge(defaultData, data), |
||||
onsuccess: BX.delegate(function(result){ |
||||
if (!result || !result.JS) |
||||
return; |
||||
|
||||
BX.ajax.processScripts( |
||||
BX.processHTML(result.JS).SCRIPT, |
||||
false, |
||||
BX.delegate(function(){this.showAction(result, data);}, this) |
||||
); |
||||
}, this) |
||||
}); |
||||
}, |
||||
|
||||
showAction: function(result, data) |
||||
{ |
||||
if (!data) |
||||
return; |
||||
|
||||
switch (data.action) |
||||
{ |
||||
case 'showMore': |
||||
this.processShowMoreAction(result); |
||||
break; |
||||
case 'deferredLoad': |
||||
this.processDeferredLoadAction(result, data.bigData === 'Y'); |
||||
break; |
||||
} |
||||
}, |
||||
|
||||
processShowMoreAction: function(result) |
||||
{ |
||||
this.formPosting = false; |
||||
this.enableButton(); |
||||
|
||||
if (result) |
||||
{ |
||||
this.navParams.NavPageNomer++; |
||||
this.processItems(result.items); |
||||
this.processPagination(result.pagination); |
||||
this.processEpilogue(result.epilogue); |
||||
this.checkButton(); |
||||
} |
||||
}, |
||||
|
||||
processDeferredLoadAction: function(result, bigData) |
||||
{ |
||||
if (!result) |
||||
return; |
||||
|
||||
var position = bigData ? this.bigData.rows : {}; |
||||
|
||||
this.processItems(result.items, BX.util.array_keys(position)); |
||||
}, |
||||
|
||||
processItems: function(itemsHtml, position) |
||||
{ |
||||
if (!itemsHtml) |
||||
return; |
||||
|
||||
var processed = BX.processHTML(itemsHtml, false), |
||||
temporaryNode = BX.create('DIV'); |
||||
|
||||
var items, k, origRows; |
||||
|
||||
temporaryNode.innerHTML = processed.HTML; |
||||
items = temporaryNode.querySelectorAll('[data-entity="items-row"]'); |
||||
|
||||
if (items.length) |
||||
{ |
||||
this.showHeader(true); |
||||
|
||||
for (k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
origRows = position ? this.container.querySelectorAll('[data-entity="items-row"]') : false; |
||||
items[k].style.opacity = 0; |
||||
|
||||
if (origRows && BX.type.isDomNode(origRows[position[k]])) |
||||
{ |
||||
origRows[position[k]].parentNode.insertBefore(items[k], origRows[position[k]]); |
||||
} |
||||
else |
||||
{ |
||||
this.container.appendChild(items[k]); |
||||
} |
||||
} |
||||
} |
||||
|
||||
new BX.easing({ |
||||
duration: 2000, |
||||
start: {opacity: 0}, |
||||
finish: {opacity: 100}, |
||||
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), |
||||
step: function(state){ |
||||
for (var k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
items[k].style.opacity = state.opacity / 100; |
||||
} |
||||
} |
||||
}, |
||||
complete: function(){ |
||||
for (var k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
items[k].removeAttribute('style'); |
||||
} |
||||
} |
||||
} |
||||
}).animate(); |
||||
} |
||||
|
||||
BX.ajax.processScripts(processed.SCRIPT); |
||||
}, |
||||
|
||||
processPagination: function(paginationHtml) |
||||
{ |
||||
if (!paginationHtml) |
||||
return; |
||||
|
||||
var pagination = document.querySelectorAll('[data-pagination-num="' + this.navParams.NavNum + '"]'); |
||||
for (var k in pagination) |
||||
{ |
||||
if (pagination.hasOwnProperty(k)) |
||||
{ |
||||
pagination[k].innerHTML = paginationHtml; |
||||
} |
||||
} |
||||
}, |
||||
|
||||
processEpilogue: function(epilogueHtml) |
||||
{ |
||||
if (!epilogueHtml) |
||||
return; |
||||
|
||||
var processed = BX.processHTML(epilogueHtml, false); |
||||
BX.ajax.processScripts(processed.SCRIPT); |
||||
}, |
||||
|
||||
showHeader: function(animate) |
||||
{ |
||||
var parentNode = BX.findParent(this.container, {attr: {'data-entity': 'parent-container'}}), |
||||
header; |
||||
|
||||
if (parentNode && BX.type.isDomNode(parentNode)) |
||||
{ |
||||
header = parentNode.querySelector('[data-entity="header"]'); |
||||
|
||||
if (header && header.getAttribute('data-showed') != 'true') |
||||
{ |
||||
header.style.display = ''; |
||||
|
||||
if (animate) |
||||
{ |
||||
new BX.easing({ |
||||
duration: 2000, |
||||
start: {opacity: 0}, |
||||
finish: {opacity: 100}, |
||||
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), |
||||
step: function(state){ |
||||
header.style.opacity = state.opacity / 100; |
||||
}, |
||||
complete: function(){ |
||||
header.removeAttribute('style'); |
||||
header.setAttribute('data-showed', 'true'); |
||||
} |
||||
}).animate(); |
||||
} |
||||
else |
||||
{ |
||||
header.style.opacity = 100; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
})(); |
@ -0,0 +1,804 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
use Bitrix\Main\Localization\Loc; |
||||
use Bitrix\Catalog\ProductTable; |
||||
|
||||
/** |
||||
* @global CMain $APPLICATION |
||||
* @var array $arParams |
||||
* @var array $arResult |
||||
* @var CatalogSectionComponent $component |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var string $templateName |
||||
* @var string $componentPath |
||||
* |
||||
* _________________________________________________________________________ |
||||
* | Attention! |
||||
* | The following comments are for system use |
||||
* | and are required for the component to work correctly in ajax mode: |
||||
* | <!-- items-container --> |
||||
* | <!-- pagination-container --> |
||||
* | <!-- component-end --> |
||||
*/ |
||||
|
||||
$this->setFrameMode(true); |
||||
|
||||
|
||||
|
||||
|
||||
if (!empty($arResult['NAV_RESULT'])) |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount, |
||||
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer, |
||||
'NavNum' => $arResult['NAV_RESULT']->NavNum |
||||
); |
||||
} |
||||
else |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => 1, |
||||
'NavPageNomer' => 1, |
||||
'NavNum' => $this->randString() |
||||
); |
||||
} |
||||
|
||||
$showTopPager = false; |
||||
$showBottomPager = false; |
||||
$showLazyLoad = false; |
||||
|
||||
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1) |
||||
{ |
||||
$showTopPager = $arParams['DISPLAY_TOP_PAGER']; |
||||
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER']; |
||||
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount']; |
||||
} |
||||
|
||||
$templateLibrary = array('popup', 'ajax', 'fx'); |
||||
$currencyList = ''; |
||||
|
||||
if (!empty($arResult['CURRENCIES'])) |
||||
{ |
||||
$templateLibrary[] = 'currency'; |
||||
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true); |
||||
} |
||||
|
||||
$templateData = array( |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'TEMPLATE_LIBRARY' => $templateLibrary, |
||||
'CURRENCIES' => $currencyList, |
||||
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager, |
||||
); |
||||
unset($currencyList, $templateLibrary); |
||||
|
||||
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT'); |
||||
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE'); |
||||
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM')); |
||||
|
||||
$positionClassMap = array( |
||||
'left' => 'product-item-label-left', |
||||
'center' => 'product-item-label-center', |
||||
'right' => 'product-item-label-right', |
||||
'bottom' => 'product-item-label-bottom', |
||||
'middle' => 'product-item-label-middle', |
||||
'top' => 'product-item-label-top' |
||||
); |
||||
|
||||
$discountPositionClass = ''; |
||||
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos) |
||||
{ |
||||
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$labelPositionClass = ''; |
||||
if (!empty($arParams['LABEL_PROP_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos) |
||||
{ |
||||
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY'); |
||||
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL'); |
||||
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE'); |
||||
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE'); |
||||
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET'); |
||||
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE'); |
||||
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE'); |
||||
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
|
||||
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD'); |
||||
|
||||
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum'])); |
||||
$containerName = 'container-'.$navParams['NavNum']; |
||||
|
||||
if ($showTopPager) |
||||
{ |
||||
?> |
||||
<div data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y') |
||||
//{ |
||||
// ?> |
||||
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
|
||||
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
|
||||
<!-- </div>--> |
||||
<!-- --><?//
|
||||
//} |
||||
//?> |
||||
|
||||
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
|
||||
<? |
||||
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS'])) |
||||
{ |
||||
$generalParams = [ |
||||
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], |
||||
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], |
||||
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'], |
||||
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'], |
||||
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'], |
||||
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'], |
||||
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'], |
||||
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], |
||||
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'], |
||||
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'], |
||||
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'], |
||||
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'], |
||||
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'], |
||||
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'], |
||||
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'], |
||||
'COMPARE_PATH' => $arParams['COMPARE_PATH'], |
||||
'COMPARE_NAME' => $arParams['COMPARE_NAME'], |
||||
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], |
||||
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'], |
||||
'LABEL_POSITION_CLASS' => $labelPositionClass, |
||||
'DISCOUNT_POSITION_CLASS' => $discountPositionClass, |
||||
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'], |
||||
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'], |
||||
'~BASKET_URL' => $arParams['~BASKET_URL'], |
||||
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'], |
||||
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'], |
||||
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'], |
||||
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'], |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'], |
||||
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'], |
||||
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'], |
||||
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'], |
||||
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'], |
||||
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'], |
||||
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'], |
||||
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'], |
||||
]; |
||||
|
||||
$areaIds = []; |
||||
$itemParameters = []; |
||||
|
||||
foreach ($arResult['ITEMS'] as $item) |
||||
{ |
||||
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction()); |
||||
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId); |
||||
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit); |
||||
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams); |
||||
|
||||
$itemParameters[$item['ID']] = [ |
||||
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']], |
||||
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE |
||||
? $arParams['~MESS_NOT_AVAILABLE_SERVICE'] |
||||
: $arParams['~MESS_NOT_AVAILABLE'] |
||||
), |
||||
]; |
||||
} |
||||
?> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<? |
||||
foreach ($arResult['ITEM_ROWS'] as $rowData) |
||||
{ |
||||
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']); |
||||
?> |
||||
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
|
||||
<? |
||||
switch ($rowData['VARIANT']) |
||||
{ |
||||
case 0: |
||||
?> |
||||
<p>case 0</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<div class="col-xs-12 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = reset($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 1: |
||||
?> |
||||
<p>case 1</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 2: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 3: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 4: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 5: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 6: |
||||
?> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-sm-4 col-md-2"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 7: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 8: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 9: |
||||
?> |
||||
<div class="col-xs-12"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-12 product-item-line-card"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
|
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
} |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
unset($rowItems); |
||||
|
||||
unset($itemParameters); |
||||
unset($areaIds); |
||||
|
||||
unset($generalParams); |
||||
?> |
||||
<!-- items-container --> |
||||
<? |
||||
} |
||||
|
||||
?> |
||||
<!-- </div>--> |
||||
</div> |
||||
<div class="pagination"> |
||||
<? |
||||
if ($showLazyLoad) |
||||
{ |
||||
?> |
||||
|
||||
<button class="more__btn button button--outline" |
||||
data-use="show-more-<?=$navParams['NavNum']?>">
|
||||
<?=$arParams['MESS_BTN_LAZY_LOAD']?> |
||||
</button> |
||||
|
||||
<? |
||||
} |
||||
|
||||
if ($showBottomPager) |
||||
{ |
||||
?> |
||||
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
$signer = new \Bitrix\Main\Security\Sign\Signer; |
||||
$signedTemplate = $signer->sign($templateName, 'catalog.section'); |
||||
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section'); |
||||
?> |
||||
<script> |
||||
BX.message({ |
||||
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
|
||||
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
|
||||
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
|
||||
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
|
||||
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
|
||||
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
|
||||
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
|
||||
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
|
||||
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
|
||||
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
|
||||
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
|
||||
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
|
||||
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
|
||||
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
|
||||
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
|
||||
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
|
||||
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
|
||||
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
|
||||
}); |
||||
var <?=$obName?> = new JCCatalogSectionComponent({
|
||||
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
|
||||
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
|
||||
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
|
||||
deferredLoad: false, |
||||
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
|
||||
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
|
||||
lazyLoad: !!'<?=$showLazyLoad?>',
|
||||
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
|
||||
template: '<?=CUtil::JSEscape($signedTemplate)?>',
|
||||
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
|
||||
parameters: '<?=CUtil::JSEscape($signedParams)?>',
|
||||
container: '<?=$containerName?>'
|
||||
}); |
||||
</script> |
||||
<!-- component-end --> |
@ -0,0 +1,640 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var string $componentPath |
||||
* @var string $componentName |
||||
* @var array $arCurrentValues |
||||
* @var array $arTemplateParameters |
||||
*/ |
||||
|
||||
use Bitrix\Main\Loader; |
||||
use Bitrix\Main\ModuleManager; |
||||
use Bitrix\Main\Web\Json; |
||||
use Bitrix\Iblock; |
||||
|
||||
if (!Loader::includeModule('iblock')) |
||||
return; |
||||
|
||||
$boolCatalog = Loader::includeModule('catalog'); |
||||
CBitrixComponent::includeComponentClass($componentName); |
||||
|
||||
$usePropertyFeatures = Iblock\Model\PropertyFeature::isEnabledFeatures(); |
||||
|
||||
$iblockExists = (!empty($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0); |
||||
|
||||
$defaultValue = array('-' => GetMessage('CP_BCS_TPL_PROP_EMPTY')); |
||||
$arSKU = false; |
||||
$boolSKU = false; |
||||
$filterDataValues = array(); |
||||
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID']))) |
||||
{ |
||||
$arSKU = CCatalogSku::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']); |
||||
$boolSKU = !empty($arSKU) && is_array($arSKU); |
||||
$filterDataValues['iblockId'] = (int)$arCurrentValues['IBLOCK_ID']; |
||||
if ($boolSKU) |
||||
{ |
||||
$filterDataValues['offersIblockId'] = $arSKU['IBLOCK_ID']; |
||||
} |
||||
} |
||||
|
||||
$arThemes = array(); |
||||
if (ModuleManager::isModuleInstalled('bitrix.eshop')) |
||||
{ |
||||
$arThemes['site'] = GetMessage('CP_BCS_TPL_THEME_SITE'); |
||||
} |
||||
|
||||
$arThemesList = array( |
||||
'blue' => GetMessage('CP_BCS_TPL_THEME_BLUE'), |
||||
'green' => GetMessage('CP_BCS_TPL_THEME_GREEN'), |
||||
'red' => GetMessage('CP_BCS_TPL_THEME_RED'), |
||||
'yellow' => GetMessage('CP_BCS_TPL_THEME_YELLOW') |
||||
); |
||||
$dir = trim(preg_replace("'[\\\\/]+'", '/', __DIR__.'/themes/')); |
||||
if (is_dir($dir)) |
||||
{ |
||||
foreach ($arThemesList as $themeID => $themeName) |
||||
{ |
||||
if (!is_file($dir.$themeID.'/style.css')) |
||||
continue; |
||||
|
||||
$arThemes[$themeID] = $themeName; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['TEMPLATE_THEME'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_TEMPLATE_THEME'), |
||||
'TYPE' => 'LIST', |
||||
'VALUES' => $arThemes, |
||||
'DEFAULT' => 'blue', |
||||
'ADDITIONAL_VALUES' => 'Y' |
||||
); |
||||
|
||||
$lineElementCount = (int)($arCurrentValues['LINE_ELEMENT_COUNT'] ?? 3); |
||||
$pageElementCount = (int)($arCurrentValues['PAGE_ELEMENT_COUNT'] ?? 18); |
||||
|
||||
$arTemplateParameters['PRODUCT_ROW_VARIANTS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ROW_VARIANTS'), |
||||
'TYPE' => 'CUSTOM', |
||||
'BIG_DATA' => \Bitrix\Main\Analytics\Catalog::isOn() ? 'Y' : 'N', |
||||
'COUNT_PARAM_NAME' => 'PAGE_ELEMENT_COUNT', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_add'), |
||||
'JS_EVENT' => 'initDraggableAddControl', |
||||
'JS_MESSAGES' => Json::encode(array( |
||||
'variant' => GetMessage('CP_BCS_TPL_SETTINGS_VARIANT'), |
||||
'delete' => GetMessage('CP_BCS_TPL_SETTINGS_DELETE'), |
||||
'quantity' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY'), |
||||
'quantityBigData' => GetMessage('CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA') |
||||
)), |
||||
'JS_DATA' => Json::encode(CatalogSectionComponent::getTemplateVariantsMap()), |
||||
'DEFAULT' => Json::encode(CatalogSectionComponent::predictRowVariants($lineElementCount, $pageElementCount)) |
||||
); |
||||
|
||||
$arTemplateParameters['ENLARGE_PRODUCT'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N', |
||||
'VALUES' => array( |
||||
'STRICT' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_STRICT'), |
||||
'PROP' => GetMessage('CP_BCS_TPL_ENLARGE_PRODUCT_PROP') |
||||
) |
||||
); |
||||
|
||||
$arTemplateParameters['PRODUCT_BLOCKS_ORDER'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCKS_ORDER'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'dragdrop_order'), |
||||
'JS_EVENT' => 'initDraggableOrderControl', |
||||
'JS_DATA' => Json::encode(array( |
||||
'price' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PRICE'), |
||||
'quantityLimit' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT'), |
||||
'quantity' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY'), |
||||
'buttons' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS'), |
||||
'props' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_PROPS'), |
||||
'sku' => GetMessage('CP_BCS_TPL_PRODUCT_BLOCK_SKU') |
||||
)), |
||||
'DEFAULT' => 'price,props,sku,quantityLimit,quantity,buttons' |
||||
); |
||||
|
||||
$arTemplateParameters['SHOW_SLIDER'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_SLIDER'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'Y' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_SLIDER']) && $arCurrentValues['SHOW_SLIDER'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['SLIDER_INTERVAL'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_INTERVAL'), |
||||
'TYPE' => 'TEXT', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '3000' |
||||
); |
||||
$arTemplateParameters['SLIDER_PROGRESS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SLIDER_PROGRESS'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'MULTIPLE' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
} |
||||
|
||||
$arAllPropList = array(); |
||||
$arFilePropList = $defaultValue; |
||||
$arListPropList = array(); |
||||
|
||||
if ($iblockExists) |
||||
{ |
||||
$rsProps = CIBlockProperty::GetList( |
||||
array('SORT' => 'ASC', 'ID' => 'ASC'), |
||||
array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y') |
||||
); |
||||
while ($arProp = $rsProps->Fetch()) |
||||
{ |
||||
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME']; |
||||
|
||||
if ($arProp['CODE'] == '') |
||||
{ |
||||
$arProp['CODE'] = $arProp['ID']; |
||||
} |
||||
|
||||
$arAllPropList[$arProp['CODE']] = $strPropName; |
||||
|
||||
if ($arProp['PROPERTY_TYPE'] === 'F') |
||||
{ |
||||
$arFilePropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
|
||||
if ($arProp['PROPERTY_TYPE'] === 'L') |
||||
{ |
||||
$arListPropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
} |
||||
|
||||
$showedProperties = []; |
||||
if ($usePropertyFeatures) |
||||
{ |
||||
if ($iblockExists) |
||||
{ |
||||
$showedProperties = Iblock\Model\PropertyFeature::getListPageShowPropertyCodes( |
||||
$arCurrentValues['IBLOCK_ID'], |
||||
['CODE' => 'Y'] |
||||
); |
||||
if ($showedProperties === null) |
||||
$showedProperties = []; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
if (!empty($arCurrentValues['PROPERTY_CODE']) && is_array($arCurrentValues['PROPERTY_CODE'])) |
||||
{ |
||||
$showedProperties = $arCurrentValues['PROPERTY_CODE']; |
||||
} |
||||
} |
||||
if (!empty($showedProperties)) |
||||
{ |
||||
$selected = array(); |
||||
|
||||
foreach ($showedProperties as $code) |
||||
{ |
||||
if (isset($arAllPropList[$code])) |
||||
{ |
||||
$selected[$code] = $arAllPropList[$code]; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['PROPERTY_CODE_MOBILE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PROPERTY_CODE_MOBILE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'VALUES' => $selected |
||||
); |
||||
} |
||||
unset($showedProperties); |
||||
|
||||
if (isset($arCurrentValues['ENLARGE_PRODUCT']) && $arCurrentValues['ENLARGE_PRODUCT'] === 'PROP') |
||||
{ |
||||
$arTemplateParameters['ENLARGE_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ENLARGE_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $defaultValue + $arListPropList |
||||
); |
||||
} |
||||
|
||||
if ($boolSKU) |
||||
{ |
||||
$arTemplateParameters['PRODUCT_DISPLAY_MODE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_DISPLAY_MODE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N', |
||||
'VALUES' => array( |
||||
'N' => GetMessage('CP_BCS_TPL_DML_SIMPLE'), |
||||
'Y' => GetMessage('CP_BCS_TPL_DML_EXT') |
||||
) |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['ADD_PICT_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ADD_PICT_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arFilePropList |
||||
); |
||||
|
||||
$arTemplateParameters['LABEL_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'Y', |
||||
'VALUES' => $arListPropList |
||||
); |
||||
|
||||
if (isset($arCurrentValues['LABEL_PROP']) && !empty($arCurrentValues['LABEL_PROP'])) |
||||
{ |
||||
if (!is_array($arCurrentValues['LABEL_PROP'])) |
||||
{ |
||||
$arCurrentValues['LABEL_PROP'] = array($arCurrentValues['LABEL_PROP']); |
||||
} |
||||
|
||||
$selected = array(); |
||||
foreach ($arCurrentValues['LABEL_PROP'] as $name) |
||||
{ |
||||
if (isset($arListPropList[$name])) |
||||
{ |
||||
$selected[$name] = $arListPropList[$name]; |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['LABEL_PROP_MOBILE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_MOBILE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'VALUES' => $selected |
||||
); |
||||
unset($selected); |
||||
|
||||
$arTemplateParameters['LABEL_PROP_POSITION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LABEL_PROP_POSITION'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'), |
||||
'JS_EVENT' => 'initPositionControl', |
||||
'JS_DATA' => Json::encode( |
||||
array( |
||||
'positions' => array( |
||||
'top-left', 'top-center', 'top-right', |
||||
'middle-left', 'middle-center', 'middle-right', |
||||
'bottom-left', 'bottom-center', 'bottom-right' |
||||
), |
||||
'className' => '' |
||||
) |
||||
), |
||||
'DEFAULT' => 'top-left' |
||||
); |
||||
} |
||||
|
||||
if ($boolSKU && isset($arCurrentValues['PRODUCT_DISPLAY_MODE']) && 'Y' == $arCurrentValues['PRODUCT_DISPLAY_MODE']) |
||||
{ |
||||
$arAllOfferPropList = array(); |
||||
$arFileOfferPropList = $arTreeOfferPropList = $defaultValue; |
||||
$rsProps = CIBlockProperty::GetList( |
||||
array('SORT' => 'ASC', 'ID' => 'ASC'), |
||||
array('IBLOCK_ID' => $arSKU['IBLOCK_ID'], 'ACTIVE' => 'Y') |
||||
); |
||||
while ($arProp = $rsProps->Fetch()) |
||||
{ |
||||
if ($arProp['ID'] == $arSKU['SKU_PROPERTY_ID']) |
||||
continue; |
||||
$arProp['USER_TYPE'] = (string)$arProp['USER_TYPE']; |
||||
$strPropName = '['.$arProp['ID'].']'.('' != $arProp['CODE'] ? '['.$arProp['CODE'].']' : '').' '.$arProp['NAME']; |
||||
if ('' == $arProp['CODE']) |
||||
$arProp['CODE'] = $arProp['ID']; |
||||
$arAllOfferPropList[$arProp['CODE']] = $strPropName; |
||||
if ('F' == $arProp['PROPERTY_TYPE']) |
||||
$arFileOfferPropList[$arProp['CODE']] = $strPropName; |
||||
if ('N' != $arProp['MULTIPLE']) |
||||
continue; |
||||
if ( |
||||
'L' == $arProp['PROPERTY_TYPE'] |
||||
|| 'E' == $arProp['PROPERTY_TYPE'] |
||||
|| ('S' == $arProp['PROPERTY_TYPE'] && 'directory' == $arProp['USER_TYPE'] && CIBlockPriceTools::checkPropDirectory($arProp)) |
||||
) |
||||
$arTreeOfferPropList[$arProp['CODE']] = $strPropName; |
||||
} |
||||
$arTemplateParameters['OFFER_ADD_PICT_PROP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_OFFER_ADD_PICT_PROP'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arFileOfferPropList |
||||
); |
||||
if (!$usePropertyFeatures) |
||||
{ |
||||
$arTemplateParameters['OFFER_TREE_PROPS'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_OFFER_TREE_PROPS'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'Y', |
||||
'ADDITIONAL_VALUES' => 'N', |
||||
'REFRESH' => 'N', |
||||
'DEFAULT' => '-', |
||||
'VALUES' => $arTreeOfferPropList |
||||
); |
||||
} |
||||
} |
||||
} |
||||
|
||||
if ($boolCatalog) |
||||
{ |
||||
$arTemplateParameters['PRODUCT_SUBSCRIPTION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_SUBSCRIPTION'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'Y' |
||||
); |
||||
$arTemplateParameters['SHOW_DISCOUNT_PERCENT'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_DISCOUNT_PERCENT'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_DISCOUNT_PERCENT']) && $arCurrentValues['SHOW_DISCOUNT_PERCENT'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['DISCOUNT_PERCENT_POSITION'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_DISCOUNT_PERCENT_POSITION'), |
||||
'TYPE' => 'CUSTOM', |
||||
'JS_FILE' => CatalogSectionComponent::getSettingsScript($componentPath, 'position'), |
||||
'JS_EVENT' => 'initPositionControl', |
||||
'JS_DATA' => Json::encode( |
||||
array( |
||||
'positions' => array( |
||||
'top-left', 'top-center', 'top-right', |
||||
'middle-left', 'middle-center', 'middle-right', |
||||
'bottom-left', 'bottom-center', 'bottom-right' |
||||
), |
||||
'className' => 'bx-pos-parameter-block-circle' |
||||
) |
||||
), |
||||
'DEFAULT' => 'bottom-right' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['SHOW_OLD_PRICE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_OLD_PRICE'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
$arTemplateParameters['SHOW_MAX_QUANTITY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY'), |
||||
'TYPE' => 'LIST', |
||||
'REFRESH' => 'Y', |
||||
'MULTIPLE' => 'N', |
||||
'VALUES' => array( |
||||
'N' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_N'), |
||||
'Y' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_Y'), |
||||
'M' => GetMessage('CP_BCS_TPL_SHOW_MAX_QUANTITY_M') |
||||
), |
||||
'DEFAULT' => array('N'), |
||||
); |
||||
|
||||
if (isset($arCurrentValues['SHOW_MAX_QUANTITY'])) |
||||
{ |
||||
if ($arCurrentValues['SHOW_MAX_QUANTITY'] !== 'N') |
||||
{ |
||||
$arTemplateParameters['MESS_SHOW_MAX_QUANTITY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT') |
||||
); |
||||
} |
||||
|
||||
if ($arCurrentValues['SHOW_MAX_QUANTITY'] === 'M') |
||||
{ |
||||
$arTemplateParameters['RELATIVE_QUANTITY_FACTOR'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => '5' |
||||
); |
||||
$arTemplateParameters['MESS_RELATIVE_QUANTITY_MANY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_RELATIVE_QUANTITY_FEW'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT') |
||||
); |
||||
} |
||||
} |
||||
|
||||
$arTemplateParameters['ADD_TO_BASKET_ACTION'] = array( |
||||
'PARENT' => 'BASKET', |
||||
'NAME' => GetMessage('CP_BCS_TPL_ADD_TO_BASKET_ACTION'), |
||||
'TYPE' => 'LIST', |
||||
'VALUES' => array( |
||||
'ADD' => GetMessage('ADD_TO_BASKET_ACTION_ADD'), |
||||
'BUY' => GetMessage('ADD_TO_BASKET_ACTION_BUY') |
||||
), |
||||
'DEFAULT' => 'ADD', |
||||
'REFRESH' => 'N' |
||||
); |
||||
$arTemplateParameters['SHOW_CLOSE_POPUP'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_CLOSE_POPUP'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N', |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['MESS_BTN_BUY'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_BUY_DEFAULT') |
||||
); |
||||
|
||||
$arTemplateParameters['LAZY_LOAD'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LAZY_LOAD'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
$arTemplateParameters['MESS_BTN_LAZY_LOAD'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD'), |
||||
'TYPE' => 'TEXT', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT'), |
||||
'HIDDEN' => (isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y' ? 'N' : 'Y') |
||||
); |
||||
|
||||
$arTemplateParameters['LOAD_ON_SCROLL'] = array( |
||||
'PARENT' => 'PAGER_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_LOAD_ON_SCROLL'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N', |
||||
'HIDDEN' => ( |
||||
(isset($arCurrentValues['LAZY_LOAD']) && $arCurrentValues['LAZY_LOAD'] === 'Y') |
||||
|| (isset($arCurrentValues['DISPLAY_TOP_PAGER']) && $arCurrentValues['DISPLAY_TOP_PAGER'] === 'Y') |
||||
|| (!isset($arCurrentValues['DISPLAY_BOTTOM_PAGER']) || $arCurrentValues['DISPLAY_BOTTOM_PAGER'] !== 'N') |
||||
? 'N' |
||||
: 'Y' |
||||
) |
||||
); |
||||
|
||||
$arTemplateParameters['MESS_BTN_ADD_TO_BASKET'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_BTN_SUBSCRIBE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT') |
||||
); |
||||
|
||||
if (isset($arCurrentValues['DISPLAY_COMPARE']) && $arCurrentValues['DISPLAY_COMPARE'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['MESS_BTN_COMPARE'] = array( |
||||
'PARENT' => 'COMPARE', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT') |
||||
); |
||||
$arTemplateParameters['COMPARE_NAME'] = array( |
||||
'PARENT' => 'COMPARE', |
||||
'NAME' => GetMessage('CP_BCS_TPL_COMPARE_NAME'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => 'CATALOG_COMPARE_LIST' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['MESS_BTN_DETAIL'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_NOT_AVAILABLE'] = array( |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT') |
||||
); |
||||
$arTemplateParameters['MESS_NOT_AVAILABLE_SERVICE'] = [ |
||||
'PARENT' => 'VISUAL', |
||||
'NAME' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => GetMessage('CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'), |
||||
]; |
||||
|
||||
if (\Bitrix\Main\Analytics\Catalog::isOn()) |
||||
{ |
||||
$arTemplateParameters['RCM_TYPE'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_TYPE_TITLE'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'VALUES' => array( |
||||
// personal |
||||
'personal' => GetMessage('CP_BCS_TPL_PERSONAL'), |
||||
// general |
||||
'bestsell' => GetMessage('CP_BCS_TPL_BESTSELLERS'), |
||||
// item2item |
||||
'similar_sell' => GetMessage('CP_BCS_TPL_SOLD_WITH'), |
||||
'similar_view' => GetMessage('CP_BCS_TPL_VIEWED_WITH'), |
||||
'similar' => GetMessage('CP_BCS_TPL_SIMILAR'), |
||||
// randomly distributed |
||||
'any_similar' => GetMessage('CP_BCS_TPL_SIMILAR_ANY'), |
||||
'any_personal' => GetMessage('CP_BCS_TPL_PERSONAL_WBEST'), |
||||
'any' => GetMessage('CP_BCS_TPL_RAND') |
||||
), |
||||
'DEFAULT' => 'personal' |
||||
); |
||||
$arTemplateParameters['RCM_PROD_ID'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_PRODUCT_ID_PARAM'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => '={$_REQUEST["PRODUCT_ID"]}' |
||||
); |
||||
$arTemplateParameters['SHOW_FROM_SECTION'] = array( |
||||
'PARENT' => 'BIG_DATA_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_SHOW_FROM_SECTION'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
} |
||||
|
||||
$arTemplateParameters['USE_ENHANCED_ECOMMERCE'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_USE_ENHANCED_ECOMMERCE'), |
||||
'TYPE' => 'CHECKBOX', |
||||
'REFRESH' => 'Y', |
||||
'DEFAULT' => 'N' |
||||
); |
||||
|
||||
if (isset($arCurrentValues['USE_ENHANCED_ECOMMERCE']) && $arCurrentValues['USE_ENHANCED_ECOMMERCE'] === 'Y') |
||||
{ |
||||
$arTemplateParameters['DATA_LAYER_NAME'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_DATA_LAYER_NAME'), |
||||
'TYPE' => 'STRING', |
||||
'DEFAULT' => 'dataLayer' |
||||
); |
||||
$arTemplateParameters['BRAND_PROPERTY'] = array( |
||||
'PARENT' => 'ANALYTICS_SETTINGS', |
||||
'NAME' => GetMessage('CP_BCS_TPL_BRAND_PROPERTY'), |
||||
'TYPE' => 'LIST', |
||||
'MULTIPLE' => 'N', |
||||
'DEFAULT' => '', |
||||
'VALUES' => $defaultValue + $arAllPropList |
||||
); |
||||
} |
@ -0,0 +1,63 @@ |
||||
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var array $arParams |
||||
* @var array $templateData |
||||
* @var string $templateFolder |
||||
* @var CatalogSectionComponent $component |
||||
*/ |
||||
|
||||
global $APPLICATION; |
||||
|
||||
if (isset($templateData['TEMPLATE_THEME'])) |
||||
{ |
||||
$APPLICATION->SetAdditionalCSS($templateFolder.'/themes/'.$templateData['TEMPLATE_THEME'].'/style.css'); |
||||
$APPLICATION->SetAdditionalCSS('/bitrix/css/main/themes/'.$templateData['TEMPLATE_THEME'].'/style.css', true); |
||||
} |
||||
|
||||
if (!empty($templateData['TEMPLATE_LIBRARY'])) |
||||
{ |
||||
$loadCurrency = false; |
||||
if (!empty($templateData['CURRENCIES'])) |
||||
{ |
||||
$loadCurrency = \Bitrix\Main\Loader::includeModule('currency'); |
||||
} |
||||
|
||||
CJSCore::Init($templateData['TEMPLATE_LIBRARY']); |
||||
|
||||
if ($loadCurrency) |
||||
{ |
||||
?> |
||||
<script> |
||||
BX.Currency.setCurrencies(<?=$templateData['CURRENCIES']?>);
|
||||
</script> |
||||
<? |
||||
} |
||||
} |
||||
|
||||
// lazy load and big data json answers |
||||
$request = \Bitrix\Main\Context::getCurrent()->getRequest(); |
||||
if ($request->isAjaxRequest() && ($request->get('action') === 'showMore' || $request->get('action') === 'deferredLoad')) |
||||
{ |
||||
$content = ob_get_contents(); |
||||
ob_end_clean(); |
||||
|
||||
[, $itemsContainer] = explode('<!-- items-container -->', $content); |
||||
$paginationContainer = ''; |
||||
if ($templateData['USE_PAGINATION_CONTAINER']) |
||||
{ |
||||
[, $paginationContainer] = explode('<!-- pagination-container -->', $content); |
||||
} |
||||
[, $epilogue] = explode('<!-- component-end -->', $content); |
||||
|
||||
if (isset($arParams['AJAX_MODE']) && $arParams['AJAX_MODE'] === 'Y') |
||||
{ |
||||
$component->prepareLinks($paginationContainer); |
||||
} |
||||
|
||||
$component::sendJsonAnswer(array( |
||||
'items' => $itemsContainer, |
||||
'pagination' => $paginationContainer, |
||||
'epilogue' => $epilogue, |
||||
)); |
||||
} |
@ -0,0 +1,107 @@ |
||||
<? |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die(); |
||||
|
||||
if (!function_exists('getDoublePicturesForItem')) |
||||
{ |
||||
function getDoublePicturesForItem(&$item, $propertyCode) |
||||
{ |
||||
$result = array( |
||||
'PICT' => false, |
||||
'SECOND_PICT' => false |
||||
); |
||||
|
||||
if (!empty($item) && is_array($item)) |
||||
{ |
||||
if (!empty($item['PREVIEW_PICTURE'])) |
||||
{ |
||||
if (!is_array($item['PREVIEW_PICTURE'])) |
||||
$item['PREVIEW_PICTURE'] = CFile::GetFileArray($item['PREVIEW_PICTURE']); |
||||
if (isset($item['PREVIEW_PICTURE']['ID'])) |
||||
{ |
||||
$result['PICT'] = array( |
||||
'ID' => intval($item['PREVIEW_PICTURE']['ID']), |
||||
'SRC' => $item['PREVIEW_PICTURE']['SRC'], |
||||
'WIDTH' => intval($item['PREVIEW_PICTURE']['WIDTH']), |
||||
'HEIGHT' => intval($item['PREVIEW_PICTURE']['HEIGHT']) |
||||
); |
||||
} |
||||
} |
||||
if (!empty($item['DETAIL_PICTURE'])) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
if (!is_array($item['DETAIL_PICTURE'])) |
||||
$item['DETAIL_PICTURE'] = CFile::GetFileArray($item['DETAIL_PICTURE']); |
||||
if (isset($item['DETAIL_PICTURE']['ID'])) |
||||
{ |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($item['DETAIL_PICTURE']['ID']), |
||||
'SRC' => $item['DETAIL_PICTURE']['SRC'], |
||||
'WIDTH' => intval($item['DETAIL_PICTURE']['WIDTH']), |
||||
'HEIGHT' => intval($item['DETAIL_PICTURE']['HEIGHT']) |
||||
); |
||||
} |
||||
} |
||||
if (empty($result['SECOND_PICT'])) |
||||
{ |
||||
if ( |
||||
'' != $propertyCode && |
||||
isset($item['PROPERTIES'][$propertyCode]) && |
||||
'F' == $item['PROPERTIES'][$propertyCode]['PROPERTY_TYPE'] |
||||
) |
||||
{ |
||||
if ( |
||||
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) && |
||||
!empty($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) |
||||
) |
||||
{ |
||||
$fileValues = ( |
||||
isset($item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']['ID']) ? |
||||
array(0 => $item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE']) : |
||||
$item['DISPLAY_PROPERTIES'][$propertyCode]['FILE_VALUE'] |
||||
); |
||||
foreach ($fileValues as &$oneFileValue) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($oneFileValue['ID']), |
||||
'SRC' => $oneFileValue['SRC'], |
||||
'WIDTH' => intval($oneFileValue['WIDTH']), |
||||
'HEIGHT' => intval($oneFileValue['HEIGHT']) |
||||
); |
||||
if ('SECOND_PICT' == $keyPict) |
||||
break; |
||||
} |
||||
if (isset($oneFileValue)) |
||||
unset($oneFileValue); |
||||
} |
||||
else |
||||
{ |
||||
$propValues = $item['PROPERTIES'][$propertyCode]['VALUE']; |
||||
if (!is_array($propValues)) |
||||
$propValues = array($propValues); |
||||
foreach ($propValues as &$oneValue) |
||||
{ |
||||
$oneFileValue = CFile::GetFileArray($oneValue); |
||||
if (isset($oneFileValue['ID'])) |
||||
{ |
||||
$keyPict = (empty($result['PICT']) ? 'PICT' : 'SECOND_PICT'); |
||||
$result[$keyPict] = array( |
||||
'ID' => intval($oneFileValue['ID']), |
||||
'SRC' => $oneFileValue['SRC'], |
||||
'WIDTH' => intval($oneFileValue['WIDTH']), |
||||
'HEIGHT' => intval($oneFileValue['HEIGHT']) |
||||
); |
||||
if ('SECOND_PICT' == $keyPict) |
||||
break; |
||||
} |
||||
} |
||||
if (isset($oneValue)) |
||||
unset($oneValue); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return $result; |
||||
} |
||||
} |
||||
?> |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 959 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,109 @@ |
||||
<?php |
||||
$MESS["ADD_PICT_PROP_TIP"] = "Eigenschaft der zusätzlichen Bilder für Produkt"; |
||||
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "Zum Warenkorb hinzufügen"; |
||||
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "Kaufen"; |
||||
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Zusätzliches Bild des Hauptproduktes"; |
||||
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Schaltfläche \"Zum Warenkorb hinzufügen\" oder \"Kaufen\" anzeigen"; |
||||
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Meistverkaufte Produkte"; |
||||
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Eigenschaft der Handelsmarken"; |
||||
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Einmaliger Name für Vergleichstabelle"; |
||||
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Name des Datencontainers"; |
||||
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Position des Rabattprozents"; |
||||
$MESS["CP_BCS_TPL_DML_EXT"] = "Erweitert"; |
||||
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "Einfacher Modus"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Produkte in der Liste hervorheben"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "nach Eigenschaft mit Rücksicht auf Vorlageneinstellungen (Sortierung der Element kann sich dabei ändern)"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "mithilfe der gewählten Vorlage (streng)"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Hervorhebung mithilfe der gewählten Eigenschaft"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Eigenschaft des Produktetiketts"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Eigenschaften der Produktlabels für mobile Geräte"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Position der Produktlabels"; |
||||
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Schaltfläche zum Lazy Load Modus anzeigen"; |
||||
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Beim Scrollen weitere Produkte anzeigen"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Text der Schaltfläche \"Zum Warenkorb hinzufügen\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "Zum Warenkorb hinzufügen"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "Text der Schaltfläche \"Kaufen\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Kaufen"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "Text der Schaltfläche \"Vergleichen\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Vergleichen"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "Text der Schalfläche \"Details\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Details"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "Text der Schaltfläche \"Mehr anzeigen\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Mehr anzeigen"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Text der Schaltfläche \"Benachrichtigen wenn wieder auf Lager\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Benachrichtigen wenn wieder auf Lager"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Nachricht über nicht verfügbares Produkt"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Produkt nicht verfügbar"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE"] = "Nachricht über die Nichtverfügbarkeit der Dienstleistung"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT"] = "Nicht verfügbar"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Text für Werte, die kleiner sind als berechnet wurde"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "nur noch wenige"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Text für Werte, die größer sind als berechnet wurde"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "am Lager"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Guthabentext"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Am Lager"; |
||||
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Zusätzliches Bild der Produktvariante"; |
||||
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Eigenschaften für die Gruppierung der Produktvarianten"; |
||||
$MESS["CP_BCS_TPL_PERSONAL"] = "Persönliche Empfehlungen"; |
||||
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Meistverkaufte/Persänliche"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Reihenfolge der Ansicht der Produktblöcke"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Aktionen"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Vergleichen"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Preis"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Eigenschaften"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Menge"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Guthaben"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "Produktvariante"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "Ansichtsmodus"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Parameter der Produkt-ID (für Empfehlungen)"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Option der Produktansicht"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Benachrichtigungen über wieder-auf-Lager aktivieren"; |
||||
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Produkteigenschaften für mobile Geräte"; |
||||
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "Nicht ausgewählt"; |
||||
$MESS["CP_BCS_TPL_RAND"] = "Beliebige Empfehlung"; |
||||
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Wert zum Ersetzen, wenn überschritten"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Löschen"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Produkte pro Seite"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "BigData Produkte pro Seite"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Option"; |
||||
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Schaltfläche \"Weiter einkaufen\" in Popup-Fenstern anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Rabattwert anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Produkte im Bereich anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Produktguthaben anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "Guthaben durch Text ersetzen"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "nicht anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "wirkliches Guthaben anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Vorherigen Preis anzeigen"; |
||||
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Laufleiste der Produkte anzeigen"; |
||||
$MESS["CP_BCS_TPL_SIMILAR"] = "Ähnliche Produkte"; |
||||
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Auch gekauft/Auch angezeigt/Ähnliche Produkte"; |
||||
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Zeitabstand beim Bildwechsel, ms"; |
||||
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Fortschrittsbalken anzeigen"; |
||||
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Mit diesem Produkt kauft man auch"; |
||||
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Farbschema"; |
||||
$MESS["CP_BCS_TPL_THEME_BLUE"] = "Blau (standardmäßig)"; |
||||
$MESS["CP_BCS_TPL_THEME_GREEN"] = "Grün"; |
||||
$MESS["CP_BCS_TPL_THEME_RED"] = "rot"; |
||||
$MESS["CP_BCS_TPL_THEME_SITE"] = "Farbschema der Website benutzen (für bitrix.eshop)"; |
||||
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "Gelb"; |
||||
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Empfehlungstyp"; |
||||
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "E-commerce Daten an Google senden"; |
||||
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Mit diesem Produkt zeigt man auch an"; |
||||
$MESS["LABEL_PROP_TIP"] = "Eigenschaft des Produktetiketts"; |
||||
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Text zum Anzeigen auf der Schaltfläche"; |
||||
$MESS["MESS_BTN_BUY_TIP"] = "Text zum Anzeigen auf der Schaltfläche"; |
||||
$MESS["MESS_BTN_COMPARE_TIP"] = "Text zum Anzeigen auf der Schaltfläche"; |
||||
$MESS["MESS_BTN_DETAIL_TIP"] = "Text zum Anzeigen auf der Schaltfläche"; |
||||
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Text zum Anzeigen auf der Schaltfläche"; |
||||
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Nachricht über nicht verfügbares Produkt"; |
||||
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Eigenschaft der zusätzlichen Bilder der Produktvarianten (wenn vorhanden)"; |
||||
$MESS["OFFER_TREE_PROPS_TIP"] = "Liste der Eigenschaften, nach denen Produktvarianten gruppiert und angezeigt werden"; |
||||
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Einige Blöcke können wegen der Vorlagenlogik die Reihenfolge nicht berücksichtigen. Ein Block kann nicht sichtbar sein, wenn er deaktiviert wurde oder nicht verfügbar ist."; |
||||
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Modus der Produktansicht (mit oder ohne Produktvariante, etc.)"; |
||||
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Benachrichtigungen für Kunden darüber aktivieren, dass die Produkte, für die sich Kunden interessieren, wieder verfügbar sind"; |
||||
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "Dieser Wert wird mit dem Ergebnis von \"Menge am Lager\" / \"Maßeinheitsverhältnis\" verglichen"; |
||||
$MESS["SHOW_CLOSE_POPUP_TIP"] = "Wenn diese Option aktiviert ist, werden die Popup-Fenster die Schaltfläche \"Weiter einkaufen\" anzeigen"; |
||||
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "Wenn der Rabatt aktiv ist, zeigt den Rabatt in Prozentangabe an"; |
||||
$MESS["SHOW_OLD_PRICE_TIP"] = "Wenn der Rabatt aktiv ist, zeigt den vorherigen Preis an"; |
||||
$MESS["TEMPLATE_THEME_TIP"] = "Bestimmt die Farben der Website-Ansicht. Standardmäßig wird Blau verwendet."; |
||||
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "Die Optionen von Google Analytics Enhanced Ecommerce müssen dafür konfiguriert werden"; |
@ -0,0 +1,27 @@ |
||||
<?php |
||||
$MESS["ADD_TO_BASKET_OK"] = "Produkt wurde zum Warenkorb hinzugefügt"; |
||||
$MESS["CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE"] = "Nicht verfügbar"; |
||||
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Unbekannter Fehler beim Hinzufügen eines Elementes zum Warenkorb"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Zum Warenkorb"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Schließen"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Weiter einkaufen"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Produkte vergleichen"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Wird geladen"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Auswählen"; |
||||
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Mehr anzeigen"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Produkt wurde zur Vergleichsliste hinzugefügt"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Produktvergleich"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "Fehler beim Hinzufügen des Produktes zur Vergleichsliste"; |
||||
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "Gesamt"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "nur noch wenige"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "Am Lager verfügbar"; |
||||
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Am Lager"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Elementeigenschaften, die zum Warenkorb hinzugefügt werden sollen"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Fehler"; |
||||
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "Alle mit diesem Eintrag verbundenen Informationen gehen verloren. Wollen Sie Fortfahren?"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "In Warenkorb"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Kaufen"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Vergleichen"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "Mehr"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Benachrichtigen wenn wieder auf Lager"; |
||||
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "nicht auf Lager"; |
@ -0,0 +1,109 @@ |
||||
<?php |
||||
$MESS["ADD_PICT_PROP_TIP"] = "Additional images property for product"; |
||||
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "Add to Cart"; |
||||
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "Buy Now"; |
||||
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Additional image of main item"; |
||||
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Show \"Add to Cart\" or \"Buy Now\" button"; |
||||
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Top Selling"; |
||||
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Brand property"; |
||||
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Unique name for comparison chart"; |
||||
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Data container name"; |
||||
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Discount percent position"; |
||||
$MESS["CP_BCS_TPL_DML_EXT"] = "extended"; |
||||
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "simple mode"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Highlight products in list"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "by property with respect to template preferences (item sort mode may change)"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "using selected template (strict)"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Highlight using selected property"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Product tag property"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Product label properties for mobile devices"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Product label position"; |
||||
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Show Lazy Load button"; |
||||
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Load more products on scroll"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "\"Add to cart\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "Add to cart"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "\"Buy\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Buy"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "\"Compare\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Compare"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "\"Details\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Details"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "\"Show More\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Show More"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "\"Notify when back in stock\" button text"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Notify when back in stock"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Item not available message"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Item not available"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE"] = "Service unavailable message"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT"] = "Unavailable"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Text for values less than calculated"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "only a few left"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Text for values greater than calculated"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "in stock"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Balance text"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Stock"; |
||||
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Additional image property of SKU"; |
||||
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Properties for grouping of SKUs"; |
||||
$MESS["CP_BCS_TPL_PERSONAL"] = "Personal recommendations"; |
||||
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Top selling/Personal"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Product block display order"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Actions"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Compare"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Price"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Properties"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Quantity"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Balance"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "SKU"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "View mode"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Product ID parameter (for recommendations)"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Product display option"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Enable back-in-stock notifications"; |
||||
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Product properties for mobile devices"; |
||||
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "not selected"; |
||||
$MESS["CP_BCS_TPL_RAND"] = "Any recommendation"; |
||||
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Replace stock value if it exceeds"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Delete"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Products per page"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "BigData products per page"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Option"; |
||||
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Show \"Continue Shopping\" button in popup windows"; |
||||
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Show discount value"; |
||||
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Show products in section"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Show product balance"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "replace balance with text"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "don't show"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "show real balance"; |
||||
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Show previous price"; |
||||
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Show product slider"; |
||||
$MESS["CP_BCS_TPL_SIMILAR"] = "Similar products"; |
||||
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Also purchased/Also viewed/Similar products"; |
||||
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Slider update timeout, ms"; |
||||
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Show progress bar"; |
||||
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Also bought"; |
||||
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Color theme"; |
||||
$MESS["CP_BCS_TPL_THEME_BLUE"] = "blue (default theme)"; |
||||
$MESS["CP_BCS_TPL_THEME_GREEN"] = "green"; |
||||
$MESS["CP_BCS_TPL_THEME_RED"] = "red"; |
||||
$MESS["CP_BCS_TPL_THEME_SITE"] = "Use site theme (for bitrix.eshop)"; |
||||
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "yellow"; |
||||
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Recommendation type"; |
||||
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "Submit e-commerce data to Google"; |
||||
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Also viewed"; |
||||
$MESS["LABEL_PROP_TIP"] = "Product tag property"; |
||||
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Text to display on button"; |
||||
$MESS["MESS_BTN_BUY_TIP"] = "Text to display on button"; |
||||
$MESS["MESS_BTN_COMPARE_TIP"] = "Text to display on button"; |
||||
$MESS["MESS_BTN_DETAIL_TIP"] = "Text to display on button"; |
||||
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Text to display on button"; |
||||
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Item not available message"; |
||||
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Property containing extra images for SKU (if exists)"; |
||||
$MESS["OFFER_TREE_PROPS_TIP"] = "List of properties by which SKUs will be grouped and displayed"; |
||||
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Some blocks may not respect the order due to template logic. A block may be invisible if it is disabled or unavailable."; |
||||
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Item display mode (with or without SKU, etc.)"; |
||||
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Enables the system to notify a customer of the new arrival of a previously out-of-stock item he or she took a particular interest in"; |
||||
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "This value is compared to the result of \"Quantity in stock\" / \"Unit ratio\""; |
||||
$MESS["SHOW_CLOSE_POPUP_TIP"] = "If checked, popup windows will show the \"Continue Shopping\" button"; |
||||
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "If the discount is active, shows the discount percent value"; |
||||
$MESS["SHOW_OLD_PRICE_TIP"] = "If the discount is active, shows the previous price"; |
||||
$MESS["TEMPLATE_THEME_TIP"] = "Defines colors for rendering the website text and graphics. Blue theme is the default option."; |
||||
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "This requires Google Analytics Enhanced Ecommerce options to be configured"; |
@ -0,0 +1,27 @@ |
||||
<?php |
||||
$MESS["ADD_TO_BASKET_OK"] = "Item added to cart"; |
||||
$MESS["CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE"] = "Unavailable"; |
||||
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Unknown error adding an item to shopping cart"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Go to shopping cart"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Close"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Continue shopping"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Compare products"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Loading"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Select"; |
||||
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Show more"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Product has been added to comparison chart"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Product comparison"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "Error adding the product to comparison chart"; |
||||
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "total"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "only a few left"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "in stock"; |
||||
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Stock"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Item properties to pass to shopping cart"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Error"; |
||||
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "All the information linked to this record will be deleted. Continue anyway?"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Add to cart"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Buy"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Compare"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "More"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Notify when back in stock"; |
||||
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "not available from stock"; |
@ -0,0 +1,110 @@ |
||||
<?php |
||||
$MESS["CP_BCS_TPL_THEME_SITE"] = "Брать тему из настроек сайта (для решения bitrix.eshop)"; |
||||
$MESS["CP_BCS_TPL_THEME_BLUE"] = "синяя (тема по умолчанию)"; |
||||
$MESS["CP_BCS_TPL_THEME_GREEN"] = "зеленая"; |
||||
$MESS["CP_BCS_TPL_THEME_RED"] = "красная"; |
||||
$MESS["CP_BCS_TPL_THEME_YELLOW"] = "желтая"; |
||||
$MESS["CP_BCS_TPL_DML_SIMPLE"] = "простой режим"; |
||||
$MESS["CP_BCS_TPL_DML_EXT"] = "расширенный"; |
||||
$MESS["CP_BCS_TPL_PROP_EMPTY"] = "не выбрано"; |
||||
$MESS["CP_BCS_TPL_TEMPLATE_THEME"] = "Цветовая тема"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCKS_ORDER"] = "Порядок отображения блоков товара"; |
||||
$MESS["PRODUCT_BLOCKS_ORDER_TIP"] = "Для некоторых блоков порядок может не соблюдаться в связи с особенностями шаблона. Также, блок товара может не отображаться, так как его функционал выключен или недоступен."; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PRICE"] = "Цена"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY_LIMIT"] = "Остаток"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_QUANTITY"] = "Количество"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_BUTTONS"] = "Действия"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_PROPS"] = "Свойства"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_SKU"] = "Торговое предложение"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_BLOCK_COMPARE"] = "Сравнение"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_DISPLAY_MODE"] = "Схема отображения"; |
||||
$MESS["CP_BCS_TPL_SHOW_SLIDER"] = "Показывать слайдер для товаров"; |
||||
$MESS["CP_BCS_TPL_SLIDER_INTERVAL"] = "Интервал смены слайдов, мс"; |
||||
$MESS["CP_BCS_TPL_SLIDER_PROGRESS"] = "Показывать полосу прогресса"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ROW_VARIANTS"] = "Вариант отображения товаров"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_VARIANT"] = "Вариант"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_DELETE"] = "Удалить"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY"] = "Количество товаров на странице"; |
||||
$MESS["CP_BCS_TPL_SETTINGS_QUANTITY_BIG_DATA"] = "Количество товаров BigData на странице"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT"] = "Выделять товары в списке"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PROP"] = "Выделять по выбранному свойству"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_STRICT"] = "по выбранному шаблону (строго)"; |
||||
$MESS["CP_BCS_TPL_ENLARGE_PRODUCT_PROP"] = "по свойству, подгонять по шаблону (возможно изменение сортировки элементов)"; |
||||
$MESS["CP_BCS_TPL_ADD_PICT_PROP"] = "Дополнительная картинка основного товара"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP"] = "Свойства меток товара"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_MOBILE"] = "Свойства меток товара, отображаемые на мобильных устройствах"; |
||||
$MESS["CP_BCS_TPL_LABEL_PROP_POSITION"] = "Расположение меток товара"; |
||||
$MESS["CP_BCS_TPL_OFFER_ADD_PICT_PROP"] = "Дополнительные картинки предложения"; |
||||
$MESS["CP_BCS_TPL_OFFER_TREE_PROPS"] = "Свойства для отбора предложений"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_SUBSCRIPTION"] = "Разрешить оповещения для отсутствующих товаров"; |
||||
$MESS["CP_BCS_TPL_SHOW_DISCOUNT_PERCENT"] = "Показывать процент скидки"; |
||||
$MESS["CP_BCS_TPL_DISCOUNT_PERCENT_POSITION"] = "Расположение процента скидки"; |
||||
$MESS["CP_BCS_TPL_SHOW_OLD_PRICE"] = "Показывать старую цену"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY"] = "Показывать остаток товара"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_Y"] = "с отображением реального остатка"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_M"] = "с подменой остатка текстом"; |
||||
$MESS["CP_BCS_TPL_SHOW_MAX_QUANTITY_N"] = "не показывать"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY"] = "Текст для остатка"; |
||||
$MESS["CP_BCS_TPL_MESS_SHOW_MAX_QUANTITY_DEFAULT"] = "Наличие"; |
||||
$MESS["CP_BCS_TPL_RELATIVE_QUANTITY_FACTOR"] = "Значение, от которого происходит подмена"; |
||||
$MESS["RELATIVE_QUANTITY_FACTOR_TIP"] = "Сравнение происходит со значением, рассчитанным по формуле \"Доступное количество\"/\"Коэффициент единицы измерения\""; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY"] = "Текст для значения больше"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_MANY_DEFAULT"] = "много"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW"] = "Текст для значения меньше"; |
||||
$MESS["CP_BCS_TPL_MESS_RELATIVE_QUANTITY_FEW_DEFAULT"] = "мало"; |
||||
$MESS["CP_BCS_TPL_ADD_TO_BASKET_ACTION"] = "Показывать кнопку добавления в корзину или покупки"; |
||||
$MESS["CP_BCS_TPL_SHOW_CLOSE_POPUP"] = "Показывать кнопку продолжения покупок во всплывающих окнах"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY"] = "Текст кнопки \"Купить\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "Текст кнопки \"Добавить в корзину\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL"] = "Текст кнопки \"Подробнее\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Текст кнопки \"Уведомить о поступлении\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE"] = "Текст кнопки \"Сравнить\""; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE"] = "Сообщение об отсутствии товара"; |
||||
$MESS['CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE'] = "Сообщение о недоступности услуги"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD"] = "Текст кнопки \"Показать ещё\""; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_BUY_DEFAULT"] = "Купить"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_ADD_TO_BASKET_DEFAULT"] = "В корзину"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_DETAIL_DEFAULT"] = "Подробнее"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_SUBSCRIBE_DEFAULT"] = "Подписаться"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_COMPARE_DEFAULT"] = "Сравнить"; |
||||
$MESS["CP_BCS_TPL_MESS_NOT_AVAILABLE_DEFAULT"] = "Нет в наличии"; |
||||
$MESS['CP_BCS_TPL_MESS_NOT_AVAILABLE_SERVICE_DEFAULT'] = "Недоступно"; |
||||
$MESS["CP_BCS_TPL_MESS_BTN_LAZY_LOAD_DEFAULT"] = "Показать ещё"; |
||||
$MESS["CP_BCS_TPL_LAZY_LOAD"] = "Показать кнопку ленивой загрузки Lazy Load"; |
||||
$MESS["CP_BCS_TPL_LOAD_ON_SCROLL"] = "Подгружать товары при прокрутке до конца"; |
||||
$MESS["ADD_TO_BASKET_ACTION_BUY"] = "покупки"; |
||||
$MESS["ADD_TO_BASKET_ACTION_ADD"] = "добавления в корзину"; |
||||
$MESS["TEMPLATE_THEME_TIP"] = "Цветовая тема для отображения. По умолчанию берется синяя тема."; |
||||
$MESS["PRODUCT_DISPLAY_MODE_TIP"] = "Схема отображения товаров (с SKU или без и т.д.)"; |
||||
$MESS["ADD_PICT_PROP_TIP"] = "Свойство дополнительных картинок товара"; |
||||
$MESS["LABEL_PROP_TIP"] = "Свойство меток товара"; |
||||
$MESS["OFFER_ADD_PICT_PROP_TIP"] = "Свойство дополнительных картинок предложений (если есть)"; |
||||
$MESS["OFFER_TREE_PROPS_TIP"] = "Свойства, по значениям которых будут группироваться торговые предложения"; |
||||
$MESS["PRODUCT_SUBSCRIPTION_TIP"] = "Разрешить оповещать клиента, что интересующий его товар стал доступен к покупке"; |
||||
$MESS["SHOW_DISCOUNT_PERCENT_TIP"] = "Вывод процентного значения скидки, если скидка есть"; |
||||
$MESS["SHOW_OLD_PRICE_TIP"] = "Показывать старую цену, если есть скидка"; |
||||
$MESS["SHOW_CLOSE_POPUP_TIP"] = "Если опция отмечена, во всплывающих окнах будет показана кнопка \"Продолжить покупки\""; |
||||
$MESS["MESS_BTN_BUY_TIP"] = "Какой текст выводить на кнопке"; |
||||
$MESS["MESS_BTN_ADD_TO_BASKET_TIP"] = "Какой текст выводить на кнопке"; |
||||
$MESS["MESS_BTN_DETAIL_TIP"] = "Какой текст выводить на кнопке"; |
||||
$MESS["MESS_BTN_SUBSCRIBE_TIP"] = "Какой текст выводить на кнопке"; |
||||
$MESS["MESS_NOT_AVAILABLE_TIP"] = "Сообщение об отсутствии товара и невозможности его купить"; |
||||
$MESS["MESS_BTN_COMPARE_TIP"] = "Какой текст выводить на кнопке"; |
||||
$MESS["CP_BCS_TPL_BESTSELLERS"] = "Самые продаваемые"; |
||||
$MESS["CP_BCS_TPL_PERSONAL"] = "Персональные рекомендации"; |
||||
$MESS["CP_BCS_TPL_SOLD_WITH"] = "Продаваемые с этим товаром"; |
||||
$MESS["CP_BCS_TPL_VIEWED_WITH"] = "Просматриваемые с этим товаром"; |
||||
$MESS["CP_BCS_TPL_SIMILAR"] = "Похожие товары"; |
||||
$MESS["CP_BCS_TPL_SIMILAR_ANY"] = "Продаваемые/Просматриваемые/Похожие товары"; |
||||
$MESS["CP_BCS_TPL_PERSONAL_WBEST"] = "Самые продаваемые/Персональные"; |
||||
$MESS["CP_BCS_TPL_RAND"] = "Любая рекомендация"; |
||||
$MESS["CP_BCS_TPL_TYPE_TITLE"] = "Тип рекомендации"; |
||||
$MESS["CP_BCS_TPL_PRODUCT_ID_PARAM"] = "Параметр ID продукта (для товарных рекомендаций)"; |
||||
$MESS["CP_BCS_TPL_SHOW_FROM_SECTION"] = "Показывать товары из раздела"; |
||||
$MESS["CP_BCS_TPL_PROPERTY_CODE_MOBILE"] = "Свойства товаров, отображаемые на мобильных устройствах"; |
||||
$MESS["CP_BCS_TPL_COMPARE_NAME"] = "Уникальное имя для списка сравнения"; |
||||
$MESS["CP_BCS_TPL_USE_ENHANCED_ECOMMERCE"] = "Отправлять данные электронной торговли в Google и Яндекс"; |
||||
$MESS["USE_ENHANCED_ECOMMERCE_TIP"] = "Требуется дополнительная настройка в Google Analytics Enhanced |
||||
Ecommerce и/или Яндекс.Метрике"; |
||||
$MESS["CP_BCS_TPL_DATA_LAYER_NAME"] = "Имя контейнера данных"; |
||||
$MESS["CP_BCS_TPL_BRAND_PROPERTY"] = "Свойство брендов"; |
@ -0,0 +1,28 @@ |
||||
<?php |
||||
$MESS["CT_BCS_TPL_ELEMENT_DELETE_CONFIRM"] = "Будет удалена вся информация, связанная с этой записью. Продолжить?"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_BUY"] = "Купить"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET"] = "В корзину"; |
||||
$MESS["CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE"] = "Нет в наличии"; |
||||
$MESS['CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE'] = "Недоступно"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_DETAIL"] = "Подробнее"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_SUBSCRIBE"] = "Подписаться"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Перейти в корзину"; |
||||
$MESS["ADD_TO_BASKET_OK"] = "Товар добавлен в корзину"; |
||||
$MESS["CT_BCS_TPL_MESS_BTN_COMPARE"] = "Сравнить"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_ERROR"] = "Ошибка"; |
||||
$MESS["CT_BCS_CATALOG_TITLE_BASKET_PROPS"] = "Свойства товара, добавляемые в корзину"; |
||||
$MESS["CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR"] = "Неизвестная ошибка при добавлении товара в корзину"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS"] = "Выбрать"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE"] = "Закрыть"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP"] = "Продолжить покупки"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT"] = "Перейти в корзину"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_OK"] = "Товар добавлен в список сравнения"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_TITLE"] = "Сравнение товаров"; |
||||
$MESS["CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR"] = "При добавлении товара в список сравнения произошла ошибка"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT"] = "Перейти в список сравнения"; |
||||
$MESS["CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER"] = "Загрузка"; |
||||
$MESS["CT_BCS_CATALOG_PRICE_TOTAL_PREFIX"] = "на сумму"; |
||||
$MESS["CT_BCS_CATALOG_SHOW_MAX_QUANTITY"] = "Наличие"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY"] = "много"; |
||||
$MESS["CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW"] = "мало"; |
||||
$MESS["CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD"] = "Показать ещё"; |
@ -0,0 +1,90 @@ |
||||
@media (min-width: 1200px){ |
||||
/*lg*/ |
||||
/*6*/ |
||||
.product-item-list-col-6 > .col-xs-12 > .row > .col-md-2:nth-child(6n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1), |
||||
/*4*/ |
||||
.product-item-list-col-4 > .col-xs-12 > .row > .col-md-3:nth-child(4n+1), |
||||
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*3*/ |
||||
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1), |
||||
/*2*/ |
||||
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*1*/ |
||||
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both} |
||||
} |
||||
@media (min-width: 992px) and (max-width:1199px){ |
||||
/*md*/ |
||||
/*6*/ |
||||
.product-item-list-col-6 > .col-xs-12 > .row > .col-md-2:nth-child(6n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-md-4:nth-child(3n+1), |
||||
/*4*/ |
||||
.product-item-list-col-4 > .col-xs-12 > .row > .col-md-3:nth-child(4n+1), |
||||
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*3*/ |
||||
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1), |
||||
/*2*/ |
||||
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*1*/ |
||||
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both} |
||||
} |
||||
@media (min-width: 768px) and (max-width: 991px){ |
||||
/*sm*/ |
||||
/*6*/ |
||||
.product-item-list-col-6 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*4*/ |
||||
.product-item-list-col-4 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-1-4 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-4-1 > .col-sm-6:nth-child(2n+1), |
||||
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*3*/ |
||||
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1), |
||||
/*2*/ |
||||
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*1*/ |
||||
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both} |
||||
} |
||||
@media (max-width: 767px){ |
||||
/*xs*/ |
||||
/*6*/ |
||||
.product-item-list-col-6 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-1-6 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-6-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*4*/ |
||||
.product-item-list-col-4 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-1-4 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
.product-item-list-col-4-1 > .col-sm-6 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*3*/ |
||||
.product-item-list-col-3 > .col-xs-12 > .row > .col-sm-4:nth-child(3n+1), |
||||
/*2*/ |
||||
.product-item-list-col-2 > .col-xs-12 > .row > .col-xs-6:nth-child(2n+1), |
||||
/*1*/ |
||||
.product-item-list-col-1 > .col-xs-12 > .row > .col-xs-12:nth-child(1n){clear: both} |
||||
} |
||||
|
||||
.catalog-section-header{ |
||||
font-size:14px; |
||||
font-weight: bold; |
||||
text-align: left; |
||||
margin:5px 0; |
||||
padding:5px 15px; |
||||
border-bottom: 2px solid #d9dee6; |
||||
color: #000; |
||||
} |
||||
|
||||
.row::before { |
||||
display: initial; |
||||
} |
@ -0,0 +1 @@ |
||||
@media(min-width:1200px){.product-item-list-col-6>.col-xs-12>.row>.col-md-2:nth-child(6n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-4>.col-xs-12>.row>.col-md-3:nth-child(4n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(min-width:992px) and (max-width:1199px){.product-item-list-col-6>.col-xs-12>.row>.col-md-2:nth-child(6n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-md-4:nth-child(3n+1),.product-item-list-col-4>.col-xs-12>.row>.col-md-3:nth-child(4n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(min-width:768px) and (max-width:991px){.product-item-list-col-6>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-1-6>.col-sm-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}@media(max-width:767px){.product-item-list-col-6>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-6>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-6-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1-4>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-4-1>.col-sm-6>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-3>.col-xs-12>.row>.col-sm-4:nth-child(3n+1),.product-item-list-col-2>.col-xs-12>.row>.col-xs-6:nth-child(2n+1),.product-item-list-col-1>.col-xs-12>.row>.col-xs-12:nth-child(1n){clear:both}}.catalog-section-header{font-size:14px;font-weight:bold;text-align:left;margin:5px 0;padding:5px 15px;border-bottom:2px solid #d9dee6;color:#000}.row::before{display:initial} |
@ -0,0 +1,9 @@ |
||||
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
/** |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var CatalogSectionComponent $component |
||||
*/ |
||||
|
||||
$component = $this->getComponent(); |
||||
$arParams = $component->applyTemplateModifications(); |
@ -0,0 +1,359 @@ |
||||
(function() { |
||||
'use strict'; |
||||
|
||||
if (!!window.JCCatalogSectionComponent) |
||||
return; |
||||
|
||||
window.JCCatalogSectionComponent = function(params) { |
||||
this.formPosting = false; |
||||
this.siteId = params.siteId || ''; |
||||
this.ajaxId = params.ajaxId || ''; |
||||
this.template = params.template || ''; |
||||
this.componentPath = params.componentPath || ''; |
||||
this.parameters = params.parameters || ''; |
||||
|
||||
if (params.navParams) |
||||
{ |
||||
this.navParams = { |
||||
NavNum: params.navParams.NavNum || 1, |
||||
NavPageNomer: parseInt(params.navParams.NavPageNomer) || 1, |
||||
NavPageCount: parseInt(params.navParams.NavPageCount) || 1 |
||||
}; |
||||
} |
||||
|
||||
this.bigData = params.bigData || {enabled: false}; |
||||
this.container = document.querySelector('[data-entity="' + params.container + '"]'); |
||||
this.showMoreButton = null; |
||||
this.showMoreButtonMessage = null; |
||||
|
||||
if (this.bigData.enabled && BX.util.object_keys(this.bigData.rows).length > 0) |
||||
{ |
||||
BX.cookie_prefix = this.bigData.js.cookiePrefix || ''; |
||||
BX.cookie_domain = this.bigData.js.cookieDomain || ''; |
||||
BX.current_server_time = this.bigData.js.serverTime; |
||||
|
||||
BX.ready(BX.delegate(this.bigDataLoad, this)); |
||||
} |
||||
|
||||
if (params.initiallyShowHeader) |
||||
{ |
||||
BX.ready(BX.delegate(this.showHeader, this)); |
||||
} |
||||
|
||||
if (params.deferredLoad) |
||||
{ |
||||
BX.ready(BX.delegate(this.deferredLoad, this)); |
||||
} |
||||
|
||||
if (params.lazyLoad) |
||||
{ |
||||
this.showMoreButton = document.querySelector('[data-use="show-more-' + this.navParams.NavNum + '"]'); |
||||
this.showMoreButtonMessage = this.showMoreButton.innerHTML; |
||||
BX.bind(this.showMoreButton, 'click', BX.proxy(this.showMore, this)); |
||||
} |
||||
|
||||
if (params.loadOnScroll) |
||||
{ |
||||
BX.bind(window, 'scroll', BX.proxy(this.loadOnScroll, this)); |
||||
} |
||||
}; |
||||
|
||||
window.JCCatalogSectionComponent.prototype = |
||||
{ |
||||
checkButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
if (this.navParams.NavPageNomer == this.navParams.NavPageCount) |
||||
{ |
||||
BX.remove(this.showMoreButton); |
||||
} |
||||
else |
||||
{ |
||||
this.container.appendChild(this.showMoreButton); |
||||
} |
||||
} |
||||
}, |
||||
|
||||
enableButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
BX.removeClass(this.showMoreButton, 'disabled'); |
||||
this.showMoreButton.innerHTML = this.showMoreButtonMessage; |
||||
} |
||||
}, |
||||
|
||||
disableButton: function() |
||||
{ |
||||
if (this.showMoreButton) |
||||
{ |
||||
BX.addClass(this.showMoreButton, 'disabled'); |
||||
this.showMoreButton.innerHTML = BX.message('BTN_MESSAGE_LAZY_LOAD_WAITER'); |
||||
} |
||||
}, |
||||
|
||||
loadOnScroll: function() |
||||
{ |
||||
var scrollTop = BX.GetWindowScrollPos().scrollTop, |
||||
containerBottom = BX.pos(this.container).bottom; |
||||
|
||||
if (scrollTop + window.innerHeight > containerBottom) |
||||
{ |
||||
this.showMore(); |
||||
} |
||||
}, |
||||
|
||||
showMore: function() |
||||
{ |
||||
if (this.navParams.NavPageNomer < this.navParams.NavPageCount) |
||||
{ |
||||
var data = {}; |
||||
data['action'] = 'showMore'; |
||||
data['PAGEN_' + this.navParams.NavNum] = this.navParams.NavPageNomer + 1; |
||||
|
||||
if (!this.formPosting) |
||||
{ |
||||
this.formPosting = true; |
||||
this.disableButton(); |
||||
this.sendRequest(data); |
||||
} |
||||
} |
||||
}, |
||||
|
||||
bigDataLoad: function() |
||||
{ |
||||
var url = 'https://analytics.bitrix.info/crecoms/v1_0/recoms.php', |
||||
data = BX.ajax.prepareData(this.bigData.params); |
||||
|
||||
if (data) |
||||
{ |
||||
url += (url.indexOf('?') !== -1 ? '&' : '?') + data; |
||||
} |
||||
|
||||
var onReady = BX.delegate(function(result){ |
||||
this.sendRequest({ |
||||
action: 'deferredLoad', |
||||
bigData: 'Y', |
||||
items: result && result.items || [], |
||||
rid: result && result.id, |
||||
count: this.bigData.count, |
||||
rowsRange: this.bigData.rowsRange, |
||||
shownIds: this.bigData.shownIds |
||||
}); |
||||
}, this); |
||||
|
||||
BX.ajax({ |
||||
method: 'GET', |
||||
dataType: 'json', |
||||
url: url, |
||||
timeout: 3, |
||||
onsuccess: onReady, |
||||
onfailure: onReady |
||||
}); |
||||
}, |
||||
|
||||
deferredLoad: function() |
||||
{ |
||||
this.sendRequest({action: 'deferredLoad'}); |
||||
}, |
||||
|
||||
sendRequest: function(data) |
||||
{ |
||||
var defaultData = { |
||||
siteId: this.siteId, |
||||
template: this.template, |
||||
parameters: this.parameters |
||||
}; |
||||
|
||||
if (this.ajaxId) |
||||
{ |
||||
defaultData.AJAX_ID = this.ajaxId; |
||||
} |
||||
|
||||
BX.ajax({ |
||||
url: this.componentPath + '/ajax.php' + (document.location.href.indexOf('clear_cache=Y') !== -1 ? '?clear_cache=Y' : ''), |
||||
method: 'POST', |
||||
dataType: 'json', |
||||
timeout: 60, |
||||
data: BX.merge(defaultData, data), |
||||
onsuccess: BX.delegate(function(result){ |
||||
if (!result || !result.JS) |
||||
return; |
||||
|
||||
BX.ajax.processScripts( |
||||
BX.processHTML(result.JS).SCRIPT, |
||||
false, |
||||
BX.delegate(function(){this.showAction(result, data);}, this) |
||||
); |
||||
}, this) |
||||
}); |
||||
}, |
||||
|
||||
showAction: function(result, data) |
||||
{ |
||||
if (!data) |
||||
return; |
||||
|
||||
switch (data.action) |
||||
{ |
||||
case 'showMore': |
||||
this.processShowMoreAction(result); |
||||
break; |
||||
case 'deferredLoad': |
||||
this.processDeferredLoadAction(result, data.bigData === 'Y'); |
||||
break; |
||||
} |
||||
}, |
||||
|
||||
processShowMoreAction: function(result) |
||||
{ |
||||
this.formPosting = false; |
||||
this.enableButton(); |
||||
|
||||
if (result) |
||||
{ |
||||
this.navParams.NavPageNomer++; |
||||
this.processItems(result.items); |
||||
this.processPagination(result.pagination); |
||||
this.processEpilogue(result.epilogue); |
||||
this.checkButton(); |
||||
} |
||||
}, |
||||
|
||||
processDeferredLoadAction: function(result, bigData) |
||||
{ |
||||
if (!result) |
||||
return; |
||||
|
||||
var position = bigData ? this.bigData.rows : {}; |
||||
|
||||
this.processItems(result.items, BX.util.array_keys(position)); |
||||
}, |
||||
|
||||
processItems: function(itemsHtml, position) |
||||
{ |
||||
if (!itemsHtml) |
||||
return; |
||||
|
||||
var processed = BX.processHTML(itemsHtml, false), |
||||
temporaryNode = BX.create('DIV'); |
||||
|
||||
var items, k, origRows; |
||||
|
||||
temporaryNode.innerHTML = processed.HTML; |
||||
items = temporaryNode.querySelectorAll('[data-entity="items-row"]'); |
||||
|
||||
if (items.length) |
||||
{ |
||||
this.showHeader(true); |
||||
|
||||
for (k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
origRows = position ? this.container.querySelectorAll('[data-entity="items-row"]') : false; |
||||
items[k].style.opacity = 0; |
||||
|
||||
if (origRows && BX.type.isDomNode(origRows[position[k]])) |
||||
{ |
||||
origRows[position[k]].parentNode.insertBefore(items[k], origRows[position[k]]); |
||||
} |
||||
else |
||||
{ |
||||
this.container.appendChild(items[k]); |
||||
} |
||||
} |
||||
} |
||||
|
||||
new BX.easing({ |
||||
duration: 2000, |
||||
start: {opacity: 0}, |
||||
finish: {opacity: 100}, |
||||
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), |
||||
step: function(state){ |
||||
for (var k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
items[k].style.opacity = state.opacity / 100; |
||||
} |
||||
} |
||||
}, |
||||
complete: function(){ |
||||
for (var k in items) |
||||
{ |
||||
if (items.hasOwnProperty(k)) |
||||
{ |
||||
items[k].removeAttribute('style'); |
||||
} |
||||
} |
||||
} |
||||
}).animate(); |
||||
} |
||||
|
||||
BX.ajax.processScripts(processed.SCRIPT); |
||||
}, |
||||
|
||||
processPagination: function(paginationHtml) |
||||
{ |
||||
if (!paginationHtml) |
||||
return; |
||||
|
||||
var pagination = document.querySelectorAll('[data-pagination-num="' + this.navParams.NavNum + '"]'); |
||||
for (var k in pagination) |
||||
{ |
||||
if (pagination.hasOwnProperty(k)) |
||||
{ |
||||
pagination[k].innerHTML = paginationHtml; |
||||
} |
||||
} |
||||
}, |
||||
|
||||
processEpilogue: function(epilogueHtml) |
||||
{ |
||||
if (!epilogueHtml) |
||||
return; |
||||
|
||||
var processed = BX.processHTML(epilogueHtml, false); |
||||
BX.ajax.processScripts(processed.SCRIPT); |
||||
}, |
||||
|
||||
showHeader: function(animate) |
||||
{ |
||||
var parentNode = BX.findParent(this.container, {attr: {'data-entity': 'parent-container'}}), |
||||
header; |
||||
|
||||
if (parentNode && BX.type.isDomNode(parentNode)) |
||||
{ |
||||
header = parentNode.querySelector('[data-entity="header"]'); |
||||
|
||||
if (header && header.getAttribute('data-showed') != 'true') |
||||
{ |
||||
header.style.display = ''; |
||||
|
||||
if (animate) |
||||
{ |
||||
new BX.easing({ |
||||
duration: 2000, |
||||
start: {opacity: 0}, |
||||
finish: {opacity: 100}, |
||||
transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), |
||||
step: function(state){ |
||||
header.style.opacity = state.opacity / 100; |
||||
}, |
||||
complete: function(){ |
||||
header.removeAttribute('style'); |
||||
header.setAttribute('data-showed', 'true'); |
||||
} |
||||
}).animate(); |
||||
} |
||||
else |
||||
{ |
||||
header.style.opacity = 100; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
})(); |
@ -0,0 +1,829 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
use Bitrix\Main\Localization\Loc; |
||||
use Bitrix\Catalog\ProductTable; |
||||
|
||||
/** |
||||
* @global CMain $APPLICATION |
||||
* @var array $arParams |
||||
* @var array $arResult |
||||
* @var CatalogSectionComponent $component |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var string $templateName |
||||
* @var string $componentPath |
||||
* |
||||
* _________________________________________________________________________ |
||||
* | Attention! |
||||
* | The following comments are for system use |
||||
* | and are required for the component to work correctly in ajax mode: |
||||
* | <!-- items-container --> |
||||
* | <!-- pagination-container --> |
||||
* | <!-- component-end --> |
||||
*/ |
||||
|
||||
$this->setFrameMode(true); |
||||
|
||||
|
||||
|
||||
|
||||
if (!empty($arResult['NAV_RESULT'])) |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount, |
||||
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer, |
||||
'NavNum' => $arResult['NAV_RESULT']->NavNum |
||||
); |
||||
} |
||||
else |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => 1, |
||||
'NavPageNomer' => 1, |
||||
'NavNum' => $this->randString() |
||||
); |
||||
} |
||||
|
||||
$showTopPager = false; |
||||
$showBottomPager = false; |
||||
$showLazyLoad = false; |
||||
|
||||
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1) |
||||
{ |
||||
$showTopPager = $arParams['DISPLAY_TOP_PAGER']; |
||||
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER']; |
||||
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount']; |
||||
} |
||||
|
||||
$templateLibrary = array('popup', 'ajax', 'fx'); |
||||
$currencyList = ''; |
||||
|
||||
if (!empty($arResult['CURRENCIES'])) |
||||
{ |
||||
$templateLibrary[] = 'currency'; |
||||
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true); |
||||
} |
||||
|
||||
$templateData = array( |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'TEMPLATE_LIBRARY' => $templateLibrary, |
||||
'CURRENCIES' => $currencyList, |
||||
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager, |
||||
); |
||||
unset($currencyList, $templateLibrary); |
||||
|
||||
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT'); |
||||
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE'); |
||||
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM')); |
||||
|
||||
$positionClassMap = array( |
||||
'left' => 'product-item-label-left', |
||||
'center' => 'product-item-label-center', |
||||
'right' => 'product-item-label-right', |
||||
'bottom' => 'product-item-label-bottom', |
||||
'middle' => 'product-item-label-middle', |
||||
'top' => 'product-item-label-top' |
||||
); |
||||
|
||||
$discountPositionClass = ''; |
||||
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos) |
||||
{ |
||||
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$labelPositionClass = ''; |
||||
if (!empty($arParams['LABEL_PROP_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos) |
||||
{ |
||||
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY'); |
||||
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL'); |
||||
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE'); |
||||
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE'); |
||||
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET'); |
||||
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE'); |
||||
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE'); |
||||
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
|
||||
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD'); |
||||
|
||||
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum'])); |
||||
$containerName = 'container-'.$navParams['NavNum']; |
||||
|
||||
if ($showTopPager) |
||||
{ |
||||
?> |
||||
<div data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y') |
||||
//{ |
||||
// ?> |
||||
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
|
||||
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
|
||||
<!-- </div>--> |
||||
<!-- --><?//
|
||||
//} |
||||
//?> |
||||
|
||||
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
|
||||
<? |
||||
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS'])) |
||||
{ |
||||
$generalParams = [ |
||||
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], |
||||
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], |
||||
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'], |
||||
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'], |
||||
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'], |
||||
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'], |
||||
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'], |
||||
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], |
||||
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'], |
||||
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'], |
||||
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'], |
||||
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'], |
||||
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'], |
||||
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'], |
||||
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'], |
||||
'COMPARE_PATH' => $arParams['COMPARE_PATH'], |
||||
'COMPARE_NAME' => $arParams['COMPARE_NAME'], |
||||
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], |
||||
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'], |
||||
'LABEL_POSITION_CLASS' => $labelPositionClass, |
||||
'DISCOUNT_POSITION_CLASS' => $discountPositionClass, |
||||
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'], |
||||
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'], |
||||
'~BASKET_URL' => $arParams['~BASKET_URL'], |
||||
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'], |
||||
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'], |
||||
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'], |
||||
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'], |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'], |
||||
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'], |
||||
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'], |
||||
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'], |
||||
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'], |
||||
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'], |
||||
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'], |
||||
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'], |
||||
]; |
||||
|
||||
$areaIds = []; |
||||
$itemParameters = []; |
||||
|
||||
foreach ($arResult['ITEMS'] as $item) |
||||
{ |
||||
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction()); |
||||
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId); |
||||
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit); |
||||
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams); |
||||
|
||||
$itemParameters[$item['ID']] = [ |
||||
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']], |
||||
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE |
||||
? $arParams['~MESS_NOT_AVAILABLE_SERVICE'] |
||||
: $arParams['~MESS_NOT_AVAILABLE'] |
||||
), |
||||
]; |
||||
} |
||||
?> |
||||
|
||||
|
||||
<div class="catalog-page__top"> |
||||
<div class="select"> |
||||
<div class="select__name">Сортировать</div> |
||||
<select name="sorting" id="sorting"> |
||||
<option value="default">По популярности</option> |
||||
<option value="price_up">По возрастанию цены</option> |
||||
<option value="price_down">По убыванию цены</option> |
||||
</select> |
||||
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg"> |
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path> |
||||
</svg> |
||||
</div> |
||||
|
||||
<button class="catalog-page__filters-btn js-show-filter" type="button"> |
||||
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> |
||||
</button> |
||||
|
||||
<div class="display-method"> |
||||
<button class="display-method__item is-active js-tile" type="button"> |
||||
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
<button class="display-method__item js-list" type="button"> |
||||
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<? |
||||
foreach ($arResult['ITEM_ROWS'] as $rowData) |
||||
{ |
||||
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']); |
||||
?> |
||||
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
|
||||
<? |
||||
switch ($rowData['VARIANT']) |
||||
{ |
||||
case 0: |
||||
?> |
||||
<p>case 0</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<div class="col-xs-12 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = reset($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 1: |
||||
?> |
||||
<p>case 1</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 2: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 3: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 4: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 5: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 6: |
||||
?> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-sm-4 col-md-2"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 7: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 8: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 9: |
||||
?> |
||||
<div class="col-xs-12"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-12 product-item-line-card"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
|
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
} |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
unset($rowItems); |
||||
|
||||
unset($itemParameters); |
||||
unset($areaIds); |
||||
|
||||
unset($generalParams); |
||||
?> |
||||
<!-- items-container --> |
||||
<? |
||||
} |
||||
|
||||
?> |
||||
<!-- </div>--> |
||||
</div> |
||||
<div class="pagination"> |
||||
<? |
||||
if ($showLazyLoad) |
||||
{ |
||||
?> |
||||
|
||||
<button class="more__btn button button--outline" |
||||
data-use="show-more-<?=$navParams['NavNum']?>">
|
||||
<?=$arParams['MESS_BTN_LAZY_LOAD']?> |
||||
</button> |
||||
|
||||
<? |
||||
} |
||||
|
||||
if ($showBottomPager) |
||||
{ |
||||
?> |
||||
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
$signer = new \Bitrix\Main\Security\Sign\Signer; |
||||
$signedTemplate = $signer->sign($templateName, 'catalog.section'); |
||||
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section'); |
||||
?> |
||||
<script> |
||||
BX.message({ |
||||
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
|
||||
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
|
||||
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
|
||||
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
|
||||
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
|
||||
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
|
||||
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
|
||||
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
|
||||
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
|
||||
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
|
||||
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
|
||||
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
|
||||
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
|
||||
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
|
||||
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
|
||||
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
|
||||
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
|
||||
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
|
||||
}); |
||||
var <?=$obName?> = new JCCatalogSectionComponent({
|
||||
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
|
||||
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
|
||||
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
|
||||
deferredLoad: false, |
||||
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
|
||||
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
|
||||
lazyLoad: !!'<?=$showLazyLoad?>',
|
||||
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
|
||||
template: '<?=CUtil::JSEscape($signedTemplate)?>',
|
||||
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
|
||||
parameters: '<?=CUtil::JSEscape($signedParams)?>',
|
||||
container: '<?=$containerName?>'
|
||||
}); |
||||
</script> |
||||
<!-- component-end --> |
@ -0,0 +1,829 @@ |
||||
<?php |
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); |
||||
|
||||
use Bitrix\Main\Localization\Loc; |
||||
use Bitrix\Catalog\ProductTable; |
||||
|
||||
/** |
||||
* @global CMain $APPLICATION |
||||
* @var array $arParams |
||||
* @var array $arResult |
||||
* @var CatalogSectionComponent $component |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var string $templateName |
||||
* @var string $componentPath |
||||
* |
||||
* _________________________________________________________________________ |
||||
* | Attention! |
||||
* | The following comments are for system use |
||||
* | and are required for the component to work correctly in ajax mode: |
||||
* | <!-- items-container --> |
||||
* | <!-- pagination-container --> |
||||
* | <!-- component-end --> |
||||
*/ |
||||
|
||||
$this->setFrameMode(true); |
||||
|
||||
|
||||
|
||||
|
||||
if (!empty($arResult['NAV_RESULT'])) |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => $arResult['NAV_RESULT']->NavPageCount, |
||||
'NavPageNomer' => $arResult['NAV_RESULT']->NavPageNomer, |
||||
'NavNum' => $arResult['NAV_RESULT']->NavNum |
||||
); |
||||
} |
||||
else |
||||
{ |
||||
$navParams = array( |
||||
'NavPageCount' => 1, |
||||
'NavPageNomer' => 1, |
||||
'NavNum' => $this->randString() |
||||
); |
||||
} |
||||
|
||||
$showTopPager = false; |
||||
$showBottomPager = false; |
||||
$showLazyLoad = false; |
||||
|
||||
if ($arParams['PAGE_ELEMENT_COUNT'] > 0 && $navParams['NavPageCount'] > 1) |
||||
{ |
||||
$showTopPager = $arParams['DISPLAY_TOP_PAGER']; |
||||
$showBottomPager = $arParams['DISPLAY_BOTTOM_PAGER']; |
||||
$showLazyLoad = $arParams['LAZY_LOAD'] === 'Y' && $navParams['NavPageNomer'] != $navParams['NavPageCount']; |
||||
} |
||||
|
||||
$templateLibrary = array('popup', 'ajax', 'fx'); |
||||
$currencyList = ''; |
||||
|
||||
if (!empty($arResult['CURRENCIES'])) |
||||
{ |
||||
$templateLibrary[] = 'currency'; |
||||
$currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true); |
||||
} |
||||
|
||||
$templateData = array( |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'TEMPLATE_LIBRARY' => $templateLibrary, |
||||
'CURRENCIES' => $currencyList, |
||||
'USE_PAGINATION_CONTAINER' => $showTopPager || $showBottomPager, |
||||
); |
||||
unset($currencyList, $templateLibrary); |
||||
|
||||
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT'); |
||||
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE'); |
||||
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM')); |
||||
|
||||
$positionClassMap = array( |
||||
'left' => 'product-item-label-left', |
||||
'center' => 'product-item-label-center', |
||||
'right' => 'product-item-label-right', |
||||
'bottom' => 'product-item-label-bottom', |
||||
'middle' => 'product-item-label-middle', |
||||
'top' => 'product-item-label-top' |
||||
); |
||||
|
||||
$discountPositionClass = ''; |
||||
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos) |
||||
{ |
||||
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$labelPositionClass = ''; |
||||
if (!empty($arParams['LABEL_PROP_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos) |
||||
{ |
||||
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$arParams['~MESS_BTN_BUY'] = ($arParams['~MESS_BTN_BUY'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_BUY'); |
||||
$arParams['~MESS_BTN_DETAIL'] = ($arParams['~MESS_BTN_DETAIL'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_DETAIL'); |
||||
$arParams['~MESS_BTN_COMPARE'] = ($arParams['~MESS_BTN_COMPARE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_COMPARE'); |
||||
$arParams['~MESS_BTN_SUBSCRIBE'] = ($arParams['~MESS_BTN_SUBSCRIBE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_SUBSCRIBE'); |
||||
$arParams['~MESS_BTN_ADD_TO_BASKET'] = ($arParams['~MESS_BTN_ADD_TO_BASKET'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_BTN_ADD_TO_BASKET'); |
||||
$arParams['~MESS_NOT_AVAILABLE'] = ($arParams['~MESS_NOT_AVAILABLE'] ?? '') ?: Loc::getMessage('CT_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE'); |
||||
$arParams['~MESS_NOT_AVAILABLE_SERVICE'] = ($arParams['~MESS_NOT_AVAILABLE_SERVICE'] ?? '') ?: Loc::getMessage('CP_BCS_TPL_MESS_PRODUCT_NOT_AVAILABLE_SERVICE'); |
||||
$arParams['~MESS_SHOW_MAX_QUANTITY'] = ($arParams['~MESS_SHOW_MAX_QUANTITY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_SHOW_MAX_QUANTITY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['~MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_MANY'] = ($arParams['MESS_RELATIVE_QUANTITY_MANY'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_MANY'); |
||||
$arParams['~MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['~MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
$arParams['MESS_RELATIVE_QUANTITY_FEW'] = ($arParams['MESS_RELATIVE_QUANTITY_FEW'] ?? '') ?: Loc::getMessage('CT_BCS_CATALOG_RELATIVE_QUANTITY_FEW'); |
||||
|
||||
$arParams['MESS_BTN_LAZY_LOAD'] = $arParams['MESS_BTN_LAZY_LOAD'] ?: Loc::getMessage('CT_BCS_CATALOG_MESS_BTN_LAZY_LOAD'); |
||||
|
||||
$obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum'])); |
||||
$containerName = 'container-'.$navParams['NavNum']; |
||||
|
||||
if ($showTopPager) |
||||
{ |
||||
?> |
||||
<div data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
//if (!isset($arParams['HIDE_SECTION_DESCRIPTION']) || $arParams['HIDE_SECTION_DESCRIPTION'] !== 'Y') |
||||
//{ |
||||
// ?> |
||||
<!-- <div class="bx-section-desc bx---><?php //=$arParams['TEMPLATE_THEME']?><!--">-->
|
||||
<!-- <p class="bx-section-desc-post">--><?php //=$arResult['DESCRIPTION'] ?? ''?><!--</p>-->
|
||||
<!-- </div>--> |
||||
<!-- --><?//
|
||||
//} |
||||
//?> |
||||
|
||||
<div class="catalog-page__sale sale js-display-list" data-entity="<?=$containerName?>">
|
||||
<? |
||||
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS'])) |
||||
{ |
||||
$generalParams = [ |
||||
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], |
||||
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], |
||||
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'], |
||||
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'], |
||||
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'], |
||||
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'], |
||||
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'], |
||||
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], |
||||
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'], |
||||
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'], |
||||
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'], |
||||
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'], |
||||
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'], |
||||
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'], |
||||
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'], |
||||
'COMPARE_PATH' => $arParams['COMPARE_PATH'], |
||||
'COMPARE_NAME' => $arParams['COMPARE_NAME'], |
||||
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], |
||||
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'], |
||||
'LABEL_POSITION_CLASS' => $labelPositionClass, |
||||
'DISCOUNT_POSITION_CLASS' => $discountPositionClass, |
||||
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'], |
||||
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'], |
||||
'~BASKET_URL' => $arParams['~BASKET_URL'], |
||||
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'], |
||||
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'], |
||||
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'], |
||||
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'], |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'], |
||||
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'], |
||||
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'], |
||||
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'], |
||||
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'], |
||||
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'], |
||||
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'], |
||||
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'], |
||||
]; |
||||
|
||||
$areaIds = []; |
||||
$itemParameters = []; |
||||
|
||||
foreach ($arResult['ITEMS'] as $item) |
||||
{ |
||||
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction()); |
||||
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId); |
||||
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit); |
||||
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams); |
||||
|
||||
$itemParameters[$item['ID']] = [ |
||||
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']], |
||||
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE |
||||
? $arParams['~MESS_NOT_AVAILABLE_SERVICE'] |
||||
: $arParams['~MESS_NOT_AVAILABLE'] |
||||
), |
||||
]; |
||||
} |
||||
?> |
||||
|
||||
|
||||
<div class="catalog-page__top"> |
||||
<div class="select"> |
||||
<div class="select__name">Сортировать</div> |
||||
<select name="sorting" id="sorting"> |
||||
<option value="default">По популярности</option> |
||||
<option value="price_up">По возрастанию цены</option> |
||||
<option value="price_down">По убыванию цены</option> |
||||
</select> |
||||
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg"> |
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path> |
||||
</svg> |
||||
</div> |
||||
|
||||
<button class="catalog-page__filters-btn js-show-filter" type="button"> |
||||
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> |
||||
</button> |
||||
|
||||
<div class="display-method"> |
||||
<button class="display-method__item is-active js-tile" type="button"> |
||||
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
<button class="display-method__item js-list" type="button"> |
||||
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<? |
||||
foreach ($arResult['ITEM_ROWS'] as $rowData) |
||||
{ |
||||
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']); |
||||
?> |
||||
<div class="sale__products <?=$rowData['CLASS']?>" data-entity="items-row">
|
||||
<? |
||||
switch ($rowData['VARIANT']) |
||||
{ |
||||
case 0: |
||||
?> |
||||
<p>case 0</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<div class="col-xs-12 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = reset($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 1: |
||||
?> |
||||
<p>case 1</p> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 2: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 3: |
||||
?> |
||||
|
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
|
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
|
||||
<? |
||||
} |
||||
?> |
||||
|
||||
<? |
||||
break; |
||||
|
||||
case 4: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 5: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 6: |
||||
?> |
||||
<div class="col-xs-12 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-sm-4 col-md-2"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 7: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = array_shift($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 8: |
||||
$rowItemsCount = count($rowItems); |
||||
?> |
||||
<div class="col-sm-6 product-item-small-card"> |
||||
<div class="row"> |
||||
<? |
||||
for ($i = 0; $i < $rowItemsCount - 1; $i++) |
||||
{ |
||||
?> |
||||
<div class="col-xs-6 col-md-4"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $rowItems[$i], |
||||
'AREA_ID' => $areaIds[$rowItems[$i]['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$rowItems[$i]['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
</div> |
||||
</div> |
||||
<div class="col-sm-6 product-item-big-card"> |
||||
<div class="row"> |
||||
<div class="col-md-12"> |
||||
<? |
||||
$item = end($rowItems); |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'Y' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
unset($item); |
||||
?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
|
||||
case 9: |
||||
?> |
||||
<div class="col-xs-12"> |
||||
<div class="row"> |
||||
<? |
||||
foreach ($rowItems as $item) |
||||
{ |
||||
?> |
||||
<div class="col-xs-12 product-item-line-card"> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
?> |
||||
|
||||
</div> |
||||
</div> |
||||
<? |
||||
break; |
||||
} |
||||
?> |
||||
</div> |
||||
<? |
||||
} |
||||
unset($rowItems); |
||||
|
||||
unset($itemParameters); |
||||
unset($areaIds); |
||||
|
||||
unset($generalParams); |
||||
?> |
||||
<!-- items-container --> |
||||
<? |
||||
} |
||||
|
||||
?> |
||||
<!-- </div>--> |
||||
</div> |
||||
<div class="pagination"> |
||||
<? |
||||
if ($showLazyLoad) |
||||
{ |
||||
?> |
||||
|
||||
<button class="more__btn button button--outline" |
||||
data-use="show-more-<?=$navParams['NavNum']?>">
|
||||
<?=$arParams['MESS_BTN_LAZY_LOAD']?> |
||||
</button> |
||||
|
||||
<? |
||||
} |
||||
|
||||
if ($showBottomPager) |
||||
{ |
||||
?> |
||||
<div class="pagination-list" data-pagination-num="<?=$navParams['NavNum']?>">
|
||||
<!-- pagination-container --> |
||||
<?=$arResult['NAV_STRING']?> |
||||
<!-- pagination-container --> |
||||
</div> |
||||
</div> |
||||
<? |
||||
} |
||||
|
||||
$signer = new \Bitrix\Main\Security\Sign\Signer; |
||||
$signedTemplate = $signer->sign($templateName, 'catalog.section'); |
||||
$signedParams = $signer->sign(base64_encode(serialize($arResult['ORIGINAL_PARAMETERS'])), 'catalog.section'); |
||||
?> |
||||
<script> |
||||
BX.message({ |
||||
BTN_MESSAGE_BASKET_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_BASKET_REDIRECT')?>',
|
||||
BASKET_URL: '<?=$arParams['BASKET_URL']?>',
|
||||
ADD_TO_BASKET_OK: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
TITLE_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_ERROR')?>',
|
||||
TITLE_BASKET_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_TITLE_BASKET_PROPS')?>',
|
||||
TITLE_SUCCESSFUL: '<?=GetMessageJS('ADD_TO_BASKET_OK')?>',
|
||||
BASKET_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_BASKET_UNKNOWN_ERROR')?>',
|
||||
BTN_MESSAGE_SEND_PROPS: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_SEND_PROPS')?>',
|
||||
BTN_MESSAGE_CLOSE: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE')?>',
|
||||
BTN_MESSAGE_CLOSE_POPUP: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_CLOSE_POPUP')?>',
|
||||
COMPARE_MESSAGE_OK: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_OK')?>',
|
||||
COMPARE_UNKNOWN_ERROR: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_UNKNOWN_ERROR')?>',
|
||||
COMPARE_TITLE: '<?=GetMessageJS('CT_BCS_CATALOG_MESS_COMPARE_TITLE')?>',
|
||||
PRICE_TOTAL_PREFIX: '<?=GetMessageJS('CT_BCS_CATALOG_PRICE_TOTAL_PREFIX')?>',
|
||||
RELATIVE_QUANTITY_MANY: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_MANY'])?>',
|
||||
RELATIVE_QUANTITY_FEW: '<?=CUtil::JSEscape($arParams['MESS_RELATIVE_QUANTITY_FEW'])?>',
|
||||
BTN_MESSAGE_COMPARE_REDIRECT: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_COMPARE_REDIRECT')?>',
|
||||
BTN_MESSAGE_LAZY_LOAD: '<?=CUtil::JSEscape($arParams['MESS_BTN_LAZY_LOAD'])?>',
|
||||
BTN_MESSAGE_LAZY_LOAD_WAITER: '<?=GetMessageJS('CT_BCS_CATALOG_BTN_MESSAGE_LAZY_LOAD_WAITER')?>',
|
||||
SITE_ID: '<?=CUtil::JSEscape($component->getSiteId())?>'
|
||||
}); |
||||
var <?=$obName?> = new JCCatalogSectionComponent({
|
||||
siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
|
||||
componentPath: '<?=CUtil::JSEscape($componentPath)?>',
|
||||
navParams: <?=CUtil::PhpToJSObject($navParams)?>,
|
||||
deferredLoad: false, |
||||
initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
|
||||
bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
|
||||
lazyLoad: !!'<?=$showLazyLoad?>',
|
||||
loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
|
||||
template: '<?=CUtil::JSEscape($signedTemplate)?>',
|
||||
ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'] ?? '')?>',
|
||||
parameters: '<?=CUtil::JSEscape($signedParams)?>',
|
||||
container: '<?=$containerName?>'
|
||||
}); |
||||
</script> |
||||
<!-- component-end --> |
@ -0,0 +1,267 @@ |
||||
<div class="catalog-page__sale sale js-display-list"> |
||||
<div class="catalog-page__top"> |
||||
<div class="select"> |
||||
<div class="select__name">Сортировать</div> |
||||
<select name="sorting" id="sorting"> |
||||
<option value="default">По популярности</option> |
||||
<option value="price_up">По возрастанию цены</option> |
||||
<option value="price_down">По убыванию цены</option> |
||||
</select> |
||||
<svg width="12" height="13" viewbox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg"> |
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2803 4.46967C10.5732 4.76256 10.5732 5.23744 10.2803 5.53033L6.53033 9.28033C6.23744 9.57322 5.76256 9.57322 5.46967 9.28033L1.71967 5.53033C1.42678 5.23744 1.42678 4.76256 1.71967 4.46967C2.01256 4.17678 2.48744 4.17678 2.78033 4.46967L6 7.68934L9.21967 4.46967C9.51256 4.17678 9.98744 4.17678 10.2803 4.46967Z" fill="#939393"></path> |
||||
</svg> |
||||
</div> |
||||
|
||||
<button class="catalog-page__filters-btn js-show-filter" type="button"> |
||||
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.875 16.125H3.75M20.25 16.125h-2.625M15.75 18a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75ZM7.875 7.875H3.75M20.25 7.875h-8.625M9.75 9.75a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" stroke="#3D3D3D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> |
||||
</button> |
||||
|
||||
<div class="display-method"> |
||||
<button class="display-method__item is-active js-tile" type="button"> |
||||
<svg width="12" height="12" viewbox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect><rect x="6.667" y="6.667" width="5.333" height="5.333" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
<button class="display-method__item js-list" type="button"> |
||||
<svg width="14" height="12" viewbox="0 0 14 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="4.667" width="14" height="2.667" rx="1" fill="currentColor"></rect><rect y="9.333" width="14" height="2.667" rx="1" fill="currentColor"></rect></svg> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
<div class="sale__products"> |
||||
|
||||
|
||||
<?php |
||||
use Bitrix\Main\Localization\Loc; |
||||
use Bitrix\Catalog\ProductTable; |
||||
|
||||
/** |
||||
* @global CMain $APPLICATION |
||||
* @var array $arParams |
||||
* @var array $arResult |
||||
* @var CatalogSectionComponent $component |
||||
* @var CBitrixComponentTemplate $this |
||||
* @var string $templateName |
||||
* @var string $componentPath |
||||
* |
||||
* _________________________________________________________________________ |
||||
* | Attention! |
||||
* | The following comments are for system use |
||||
* | and are required for the component to work correctly in ajax mode: |
||||
* | <!-- items-container --> |
||||
* | <!-- pagination-container --> |
||||
* | <!-- component-end --> |
||||
*/ |
||||
|
||||
|
||||
$discountPositionClass = ''; |
||||
if ($arParams['SHOW_DISCOUNT_PERCENT'] === 'Y' && !empty($arParams['DISCOUNT_PERCENT_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['DISCOUNT_PERCENT_POSITION']) as $pos) |
||||
{ |
||||
$discountPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
$labelPositionClass = ''; |
||||
if (!empty($arParams['LABEL_PROP_POSITION'])) |
||||
{ |
||||
foreach (explode('-', $arParams['LABEL_PROP_POSITION']) as $pos) |
||||
{ |
||||
$labelPositionClass .= isset($positionClassMap[$pos]) ? ' '.$positionClassMap[$pos] : ''; |
||||
} |
||||
} |
||||
|
||||
if (!empty($arResult['ITEMS']) && !empty($arResult['ITEM_ROWS'])) |
||||
{ |
||||
$generalParams = [ |
||||
'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], |
||||
'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], |
||||
'SHOW_MAX_QUANTITY' => $arParams['SHOW_MAX_QUANTITY'], |
||||
'RELATIVE_QUANTITY_FACTOR' => $arParams['RELATIVE_QUANTITY_FACTOR'], |
||||
'MESS_SHOW_MAX_QUANTITY' => $arParams['~MESS_SHOW_MAX_QUANTITY'], |
||||
'MESS_RELATIVE_QUANTITY_MANY' => $arParams['~MESS_RELATIVE_QUANTITY_MANY'], |
||||
'MESS_RELATIVE_QUANTITY_FEW' => $arParams['~MESS_RELATIVE_QUANTITY_FEW'], |
||||
'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], |
||||
'USE_PRODUCT_QUANTITY' => $arParams['USE_PRODUCT_QUANTITY'], |
||||
'PRODUCT_QUANTITY_VARIABLE' => $arParams['PRODUCT_QUANTITY_VARIABLE'], |
||||
'ADD_TO_BASKET_ACTION' => $arParams['ADD_TO_BASKET_ACTION'], |
||||
'ADD_PROPERTIES_TO_BASKET' => $arParams['ADD_PROPERTIES_TO_BASKET'], |
||||
'PRODUCT_PROPS_VARIABLE' => $arParams['PRODUCT_PROPS_VARIABLE'], |
||||
'SHOW_CLOSE_POPUP' => $arParams['SHOW_CLOSE_POPUP'], |
||||
'DISPLAY_COMPARE' => $arParams['DISPLAY_COMPARE'], |
||||
'COMPARE_PATH' => $arParams['COMPARE_PATH'], |
||||
'COMPARE_NAME' => $arParams['COMPARE_NAME'], |
||||
'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], |
||||
'PRODUCT_BLOCKS_ORDER' => $arParams['PRODUCT_BLOCKS_ORDER'], |
||||
'LABEL_POSITION_CLASS' => $labelPositionClass, |
||||
'DISCOUNT_POSITION_CLASS' => $discountPositionClass, |
||||
'SLIDER_INTERVAL' => $arParams['SLIDER_INTERVAL'], |
||||
'SLIDER_PROGRESS' => $arParams['SLIDER_PROGRESS'], |
||||
'~BASKET_URL' => $arParams['~BASKET_URL'], |
||||
'~ADD_URL_TEMPLATE' => $arResult['~ADD_URL_TEMPLATE'], |
||||
'~BUY_URL_TEMPLATE' => $arResult['~BUY_URL_TEMPLATE'], |
||||
'~COMPARE_URL_TEMPLATE' => $arResult['~COMPARE_URL_TEMPLATE'], |
||||
'~COMPARE_DELETE_URL_TEMPLATE' => $arResult['~COMPARE_DELETE_URL_TEMPLATE'], |
||||
'TEMPLATE_THEME' => $arParams['TEMPLATE_THEME'], |
||||
'USE_ENHANCED_ECOMMERCE' => $arParams['USE_ENHANCED_ECOMMERCE'], |
||||
'DATA_LAYER_NAME' => $arParams['DATA_LAYER_NAME'], |
||||
'BRAND_PROPERTY' => $arParams['BRAND_PROPERTY'], |
||||
'MESS_BTN_BUY' => $arParams['~MESS_BTN_BUY'], |
||||
'MESS_BTN_DETAIL' => $arParams['~MESS_BTN_DETAIL'], |
||||
'MESS_BTN_COMPARE' => $arParams['~MESS_BTN_COMPARE'], |
||||
'MESS_BTN_SUBSCRIBE' => $arParams['~MESS_BTN_SUBSCRIBE'], |
||||
'MESS_BTN_ADD_TO_BASKET' => $arParams['~MESS_BTN_ADD_TO_BASKET'], |
||||
]; |
||||
} |
||||
$elementEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_EDIT'); |
||||
$elementDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'ELEMENT_DELETE'); |
||||
$elementDeleteParams = array('CONFIRM' => GetMessage('CT_BCS_TPL_ELEMENT_DELETE_CONFIRM')); |
||||
|
||||
$areaIds = []; |
||||
$itemParameters = []; |
||||
|
||||
foreach ($arResult['ITEMS'] as $item) |
||||
{ |
||||
$uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction()); |
||||
$areaIds[$item['ID']] = $this->GetEditAreaId($uniqueId); |
||||
$this->AddEditAction($uniqueId, $item['EDIT_LINK'], $elementEdit); |
||||
$this->AddDeleteAction($uniqueId, $item['DELETE_LINK'], $elementDelete, $elementDeleteParams); |
||||
|
||||
$itemParameters[$item['ID']] = [ |
||||
'SKU_PROPS' => $arResult['SKU_PROPS'][$item['IBLOCK_ID']], |
||||
'MESS_NOT_AVAILABLE' => ($arResult['MODULES']['catalog'] && $item['PRODUCT']['TYPE'] === ProductTable::TYPE_SERVICE |
||||
? $arParams['~MESS_NOT_AVAILABLE_SERVICE'] |
||||
: $arParams['~MESS_NOT_AVAILABLE'] |
||||
), |
||||
]; |
||||
} |
||||
?> |
||||
|
||||
<!-- items-container --> |
||||
<?php foreach ($arResult['ITEM_ROWS'] as $rowData): |
||||
$rowItems = array_splice($arResult['ITEMS'], 0, $rowData['COUNT']); |
||||
foreach ($rowItems as $item): |
||||
?> |
||||
|
||||
<!-- <pre>--> |
||||
<!-- --><?// print_r($item['NAME'];); ?>
|
||||
<!-- </pre>--> |
||||
<? |
||||
$APPLICATION->IncludeComponent( |
||||
'bitrix:catalog.item', |
||||
'cat_item', |
||||
array( |
||||
'RESULT' => array( |
||||
'ITEM' => $item, |
||||
'AREA_ID' => $areaIds[$item['ID']], |
||||
'TYPE' => $rowData['TYPE'], |
||||
'BIG_LABEL' => 'N', |
||||
'BIG_DISCOUNT_PERCENT' => 'N', |
||||
'BIG_BUTTONS' => 'Y', |
||||
'SCALABLE' => 'N' |
||||
), |
||||
'PARAMS' => $generalParams + $itemParameters[$item['ID']], |
||||
), |
||||
$component, |
||||
array('HIDE_ICONS' => 'Y') |
||||
); |
||||
?> |
||||
<!-- <div class="product">--> |
||||
<!-- <a class="product__image" href="product.html">--> |
||||
<!-- <img src="png/product.png" width="336" height="340" alt="product">--> |
||||
<!-- </a>--> |
||||
<!-- <div class="product__data-list">--> |
||||
<!-- <p class="product__text">1Решение для небольших дачных домов</p>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <p class="product__text">2Пользователей: <span>1-3 чел</span></p>--> |
||||
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>--> |
||||
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>--> |
||||
<!-- <p class="product__text">Питание: <span>не нужно</span></p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__rating rating rating--4">4/5</div>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__data">--> |
||||
<!-- <div class="product__rating rating rating--4">4/5</div>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <a class="product__title" href="product.html">--><?php //=$item['NAME'];?><!--</a>-->
|
||||
<!-- <p class="product__text">1Решение для небольших дачных домов</p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <p class="product__text">2Пользователей: <span>1-3 чел</span></p>--> |
||||
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>--> |
||||
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>--> |
||||
<!-- <p class="product__text">Питание: <span>не нужно</span></p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__price">77 000 ₽</div>--> |
||||
<!-- <div class="product__btns">--> |
||||
<!-- <button class="button button--orange">Купить</button>--> |
||||
<!-- <button class="button button--outline">Купить с установкой</button>--> |
||||
<!-- </div>--> |
||||
<!-- </div>--> |
||||
<!-- </div>--> |
||||
|
||||
|
||||
|
||||
<?php |
||||
endforeach; |
||||
endforeach; ?> |
||||
|
||||
|
||||
|
||||
<!-- <div class="product product--sold">--> |
||||
<!-- <a class="product__image" href="product.html">--> |
||||
<!-- <img src="png/product.png" width="336" height="340" alt="product">--> |
||||
<!-- </a>--> |
||||
<!-- <div class="product__data-list">--> |
||||
<!-- <p class="product__text">Решение для небольших дачных домов</p>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <p class="product__text">Пользователей: <span>1-3 чел</span></p>--> |
||||
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>--> |
||||
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>--> |
||||
<!-- <p class="product__text">Питание: <span>не нужно</span></p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__rating rating rating--4">4/5</div>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__data">--> |
||||
<!-- <div class="product__rating rating rating--4">4/5</div>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <a class="product__title" href="product.html">Септик ЭРА 4 прин</a>--> |
||||
<!-- <p class="product__text">Решение для небольших дачных домов</p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__info">--> |
||||
<!-- <p class="product__text">Пользователей: <span>1-3 чел</span></p>--> |
||||
<!-- <p class="product__text">Производительность: <span>0.5м2</span></p>--> |
||||
<!-- <p class="product__text">Сброс: <span>150 литров</span></p>--> |
||||
<!-- <p class="product__text">Питание: <span>не нужно</span></p>--> |
||||
<!-- </div>--> |
||||
<!-- <div class="product__price">77 000 ₽</div>--> |
||||
<!-- <div class="product__btns">--> |
||||
<!-- Нет в наличии--> |
||||
<!-- </div>--> |
||||
<!-- </div>--> |
||||
<!-- </div>--> |
||||
</div> |
||||
|
||||
<div class="pagination"> |
||||
<button class="more__btn button button--outline">Показать еще</button> |
||||
<div class="pagination-list"> |
||||
<button class="pagination-item button button--outline"> |
||||
<img src="svg/arrow-left.svg" alt="Предыдущая страница"> |
||||
</button> |
||||
<button class="pagination-item is-active button button--outline">1</button> |
||||
<button class="pagination-item button button--outline">2</button> |
||||
<button class="pagination-item button button--outline">3</button> |
||||
<button class="pagination-item button button--outline">4</button> |
||||
<button class="pagination-item button button--outline">5</button> |
||||
<button class="pagination-item is-middle button button--outline"> |
||||
... |
||||
</button> |
||||
<button class="pagination-item button button--outline">10</button> |
||||
<button class="pagination-item button button--outline"> |
||||
<img src="svg/arrow-right.svg" alt="Предыдущая страница"> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
</div> |
||||
</div> |
||||
</section> |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,61 @@ |
||||
/* catalog.section */ |
||||
.bx_black.bx-section-desc{ |
||||
border-left-color:#0083d1; |
||||
} |
||||
.bx_catalog_list_home.bx_black .bx_bt_button { |
||||
background:#00a2df; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb)); |
||||
background:-webkit-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -moz-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -ms-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -o-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: linear-gradient(to bottom,#00a2df 0%,#006fcb 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0); |
||||
|
||||
color:#fff; |
||||
text-shadow: 0 1px 0 #165c99; |
||||
display:inline-block; |
||||
border-radius:3px; |
||||
text-align:center; |
||||
text-decoration:none; |
||||
font-size:14px; |
||||
cursor:pointer; |
||||
} |
||||
.bx_catalog_list_home.bx_black .bx_bt_button:hover { |
||||
background:#26b0e4; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3)); |
||||
background:-webkit-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -moz-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -ms-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -o-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: linear-gradient(to bottom,#26b0e4 0%,#2684d3 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0 ); |
||||
} |
||||
.bx_catalog_list_home.bx_black .bx_bt_button:active { |
||||
background:#0052bf; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3)); |
||||
background:-webkit-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -moz-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -ms-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -o-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background:linear-gradient(to bottom,#0052bf 0%,#0085d3 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0 ); |
||||
} |
||||
|
||||
/* scu_detail_size */ |
||||
.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_size ul li.bx_active .cnt{ |
||||
-webkit-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-moz-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-o-border-image: url(images/x2border_active.png) 2 stretch; |
||||
border-image: url(images/x2border_active.png) 2 fill stretch; |
||||
} |
||||
/* scu_detail_scu */ |
||||
.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{ |
||||
-webkit-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-moz-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-o-border-image: url(images/x2border_active.png) 2 stretch; |
||||
border-image: url(images/x2border_active.png) 2 fill stretch; |
||||
} |
@ -0,0 +1 @@ |
||||
.bx_black.bx-section-desc{border-left-color:#0083d1}.bx_catalog_list_home.bx_black .bx_bt_button{background:#00a2df;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));background:-webkit-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-moz-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-ms-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-o-linear-gradient(top,#00a2df 0,#006fcb 100%);background:linear-gradient(to bottom,#00a2df 0,#006fcb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);color:#fff;text-shadow:0 1px 0 #165c99;display:inline-block;border-radius:3px;text-align:center;text-decoration:none;font-size:14px;cursor:pointer}.bx_catalog_list_home.bx_black .bx_bt_button:hover{background:#26b0e4;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));background:-webkit-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-moz-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-ms-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-o-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:linear-gradient(to bottom,#26b0e4 0,#2684d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0)}.bx_catalog_list_home.bx_black .bx_bt_button:active{background:#0052bf;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));background:-webkit-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-moz-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-ms-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-o-linear-gradient(top,#0052bf 0,#0085d3 100%);background:linear-gradient(to bottom,#0052bf 0,#0085d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0)}.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_size ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}.bx-retina .bx_catalog_list_home.bx_black .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch} |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,25 @@ |
||||
/* catalog.section */ |
||||
|
||||
/* |
||||
#3052bf |
||||
#26b0e4 |
||||
#00a2df |
||||
*/ |
||||
|
||||
/* Slider */ |
||||
.bx-blue .product-item-image-slider-progress-bar { background-color: #0083d1;} |
||||
.bx-blue .product-item-image-slider-control:hover{ background-color: rgba(0,131,209,.8);} |
||||
.bx-blue .product-item-image-slider-control.active, |
||||
.bx-blue .product-item-image-slider-control:hover{ background-color: #0083d1;} |
||||
|
||||
/* SCU */ |
||||
.bx-blue .product-item-scu-item-text-block:hover, |
||||
.bx-blue .product-item-scu-item-color-block:hover, |
||||
.bx-blue .product-item-scu-item-text-container.selected .product-item-scu-item-text-block, |
||||
.bx-blue .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #006cc0;} |
||||
|
||||
/* Amount */ |
||||
.bx-blue .product-item-amount-field:focus{border-color: #006cc0;} |
||||
|
||||
|
||||
.bx-blue .catalog-section-header{border-color:#006cc0;} |
@ -0,0 +1 @@ |
||||
.bx-blue .product-item-image-slider-progress-bar{background-color:#0083d1}.bx-blue .product-item-image-slider-control:hover{background-color:rgba(0,131,209,.8)}.bx-blue .product-item-image-slider-control.active,.bx-blue .product-item-image-slider-control:hover{background-color:#0083d1}.bx-blue .product-item-scu-item-text-block:hover,.bx-blue .product-item-scu-item-color-block:hover,.bx-blue .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-blue .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#006cc0}.bx-blue .product-item-amount-field:focus{border-color:#006cc0}.bx-blue .catalog-section-header{border-color:#006cc0} |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,26 @@ |
||||
/* catalog.section */ |
||||
|
||||
/* |
||||
#63aa28 |
||||
#6fb32d |
||||
#7ab748 |
||||
#a8d95b |
||||
*/ |
||||
|
||||
/* Slider */ |
||||
.bx-green .product-item-image-slider-progress-bar { background-color: #5b9f0b;} |
||||
.bx-green .product-item-image-slider-control:hover{ background-color: rgba(91,159,11,.8);} |
||||
.bx-green .product-item-image-slider-control.active, |
||||
.bx-green .product-item-image-slider-control:hover{ background-color: #5b9f0b;} |
||||
|
||||
/* SCU */ |
||||
.bx-green .product-item-scu-item-text-block:hover, |
||||
.bx-green .product-item-scu-item-color-block:hover, |
||||
.bx-green .product-item-scu-item-text-container.selected .product-item-scu-item-text-block, |
||||
.bx-green .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #63aa28;} |
||||
|
||||
/* Amount */ |
||||
.bx-green .product-item-amount-field:focus{border-color: #63aa28;} |
||||
|
||||
|
||||
.bx-green .catalog-section-header{border-color:#63aa28;} |
@ -0,0 +1 @@ |
||||
.bx-green .product-item-image-slider-progress-bar{background-color:#5b9f0b}.bx-green .product-item-image-slider-control:hover{background-color:rgba(91,159,11,.8)}.bx-green .product-item-image-slider-control.active,.bx-green .product-item-image-slider-control:hover{background-color:#5b9f0b}.bx-green .product-item-scu-item-text-block:hover,.bx-green .product-item-scu-item-color-block:hover,.bx-green .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-green .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#63aa28}.bx-green .product-item-amount-field:focus{border-color:#63aa28}.bx-green .catalog-section-header{border-color:#63aa28} |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,26 @@ |
||||
/* catalog.section */ |
||||
|
||||
/* |
||||
#651c0d |
||||
#a9331c |
||||
#772c1c |
||||
#bd4b35 |
||||
*/ |
||||
|
||||
/* Slider */ |
||||
.bx-red .product-item-image-slider-progress-bar { background-color: #F42C2C;} |
||||
.bx-red .product-item-image-slider-control:hover{ background-color: rgba(244,44,44,.8);} |
||||
.bx-red .product-item-image-slider-control.active, |
||||
.bx-red .product-item-image-slider-control:hover{ background-color: #F42C2C;} |
||||
|
||||
/* SCU */ |
||||
.bx-red .product-item-scu-item-text-block:hover, |
||||
.bx-red .product-item-scu-item-color-block:hover, |
||||
.bx-red .product-item-scu-item-text-container.selected .product-item-scu-item-text-block, |
||||
.bx-red .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #da3737;} |
||||
|
||||
/* Amount */ |
||||
.bx-red .product-item-amount-field:focus{border-color: #da3737;} |
||||
|
||||
|
||||
.bx-red .catalog-section-header{border-color:#da3737;} |
@ -0,0 +1 @@ |
||||
.bx-red .product-item-image-slider-progress-bar{background-color:#f42c2c}.bx-red .product-item-image-slider-control:hover{background-color:rgba(244,44,44,.8)}.bx-red .product-item-image-slider-control.active,.bx-red .product-item-image-slider-control:hover{background-color:#f42c2c}.bx-red .product-item-scu-item-text-block:hover,.bx-red .product-item-scu-item-color-block:hover,.bx-red .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-red .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#da3737}.bx-red .product-item-amount-field:focus{border-color:#da3737}.bx-red .catalog-section-header{border-color:#da3737} |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,62 @@ |
||||
/* catalog.section */ |
||||
.bx_wood.bx-section-desc{ |
||||
border-left-color:#0083d1; |
||||
} |
||||
.bx_catalog_list_home.bx_wood .bx_bt_button { |
||||
background:#00a2df; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb)); |
||||
background:-webkit-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -moz-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -ms-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: -o-linear-gradient(top,#00a2df 0%,#006fcb 100%); |
||||
background: linear-gradient(to bottom,#00a2df 0%,#006fcb 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0); |
||||
|
||||
color:#fff; |
||||
text-shadow: 0 1px 0 #165c99; |
||||
display:inline-block; |
||||
border-radius:3px; |
||||
text-align:center; |
||||
text-decoration:none; |
||||
font-size:14px; |
||||
cursor:pointer; |
||||
} |
||||
.bx_catalog_list_home.bx_wood .bx_bt_button:hover { |
||||
background:#26b0e4; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3)); |
||||
background:-webkit-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -moz-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -ms-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: -o-linear-gradient(top,#26b0e4 0%,#2684d3 100%); |
||||
background: linear-gradient(to bottom,#26b0e4 0%,#2684d3 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0 ); |
||||
} |
||||
.bx_catalog_list_home.bx_wood .bx_bt_button:active { |
||||
background:#0052bf; |
||||
background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); |
||||
background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3)); |
||||
background:-webkit-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -moz-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -ms-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background: -o-linear-gradient(top,#0052bf 0%,#0085d3 100%); |
||||
background:linear-gradient(to bottom,#0052bf 0%,#0085d3 100%); |
||||
filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0 ); |
||||
} |
||||
|
||||
/* scu_detail_size */ |
||||
.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_size ul li.bx_active .cnt{ |
||||
-webkit-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-moz-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-o-border-image: url(images/x2border_active.png) 2 stretch; |
||||
border-image: url(images/x2border_active.png) 2 fill stretch; |
||||
} |
||||
|
||||
/* scu_detail_scu */ |
||||
.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{ |
||||
-webkit-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-moz-border-image: url(images/x2border_active.png) 2 stretch; |
||||
-o-border-image: url(images/x2border_active.png) 2 stretch; |
||||
border-image: url(images/x2border_active.png) 2 fill stretch; |
||||
} |
@ -0,0 +1 @@ |
||||
.bx_wood.bx-section-desc{border-left-color:#0083d1}.bx_catalog_list_home.bx_wood .bx_bt_button{background:#00a2df;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYTJkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDZmY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#00a2df),color-stop(100%,#006fcb));background:-webkit-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-moz-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-ms-linear-gradient(top,#00a2df 0,#006fcb 100%);background:-o-linear-gradient(top,#00a2df 0,#006fcb 100%);background:linear-gradient(to bottom,#00a2df 0,#006fcb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00a2df',endColorstr='#006fcb',GradientType=0);color:#fff;text-shadow:0 1px 0 #165c99;display:inline-block;border-radius:3px;text-align:center;text-decoration:none;font-size:14px;cursor:pointer}.bx_catalog_list_home.bx_wood .bx_bt_button:hover{background:#26b0e4;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzI2YjBlNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#26b0e4),color-stop(100%,#2684d3));background:-webkit-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-moz-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-ms-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:-o-linear-gradient(top,#26b0e4 0,#2684d3 100%);background:linear-gradient(to bottom,#26b0e4 0,#2684d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#26b0e4',endColorstr='#2684d3',GradientType=0)}.bx_catalog_list_home.bx_wood .bx_bt_button:active{background:#0052bf;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwNTJiZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDg1ZDMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0052bf),color-stop(100%,#0085d3));background:-webkit-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-moz-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-ms-linear-gradient(top,#0052bf 0,#0085d3 100%);background:-o-linear-gradient(top,#0052bf 0,#0085d3 100%);background:linear-gradient(to bottom,#0052bf 0,#0085d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0052bf',endColorstr='#0085d3',GradientType=0)}.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_size ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch}.bx-retina .bx_catalog_list_home.bx_wood .bx_item_detail_scu .bx_scu ul li.bx_active .cnt{-webkit-border-image:url(images/x2border_active.png) 2 stretch;-moz-border-image:url(images/x2border_active.png) 2 stretch;-o-border-image:url(images/x2border_active.png) 2 stretch;border-image:url(images/x2border_active.png) 2 fill stretch} |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,26 @@ |
||||
/* catalog.section */ |
||||
|
||||
/* |
||||
#f4b236 |
||||
#f6c042 |
||||
#f7c95e |
||||
#f9d857 |
||||
*/ |
||||
|
||||
/* Slider */ |
||||
.bx-yellow .product-item-image-slider-progress-bar { background-color: #f9a91d;} |
||||
.bx-yellow .product-item-image-slider-control:hover{ background-color: rgba(249,169,29,.8);} |
||||
.bx-yellow .product-item-image-slider-control.active, |
||||
.bx-yellow .product-item-image-slider-control:hover{ background-color: #f9a91d;} |
||||
|
||||
/* SCU */ |
||||
.bx-yellow .product-item-scu-item-text-block:hover, |
||||
.bx-yellow .product-item-scu-item-color-block:hover, |
||||
.bx-yellow .product-item-scu-item-text-container.selected .product-item-scu-item-text-block, |
||||
.bx-yellow .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{ outline-color: #f4b236;} |
||||
|
||||
/* Amount */ |
||||
.bx-yellow .product-item-amount-field:focus{border-color: #f4b236;} |
||||
|
||||
|
||||
.bx-yellow .catalog-section-header{border-color:#f4b236;} |
@ -0,0 +1 @@ |
||||
.bx-yellow .product-item-image-slider-progress-bar{background-color:#f9a91d}.bx-yellow .product-item-image-slider-control:hover{background-color:rgba(249,169,29,.8)}.bx-yellow .product-item-image-slider-control.active,.bx-yellow .product-item-image-slider-control:hover{background-color:#f9a91d}.bx-yellow .product-item-scu-item-text-block:hover,.bx-yellow .product-item-scu-item-color-block:hover,.bx-yellow .product-item-scu-item-text-container.selected .product-item-scu-item-text-block,.bx-yellow .product-item-scu-item-color-container.selected .product-item-scu-item-color-block{outline-color:#f4b236}.bx-yellow .product-item-amount-field:focus{border-color:#f4b236}.bx-yellow .catalog-section-header{border-color:#f4b236} |
@ -0,0 +1,80 @@ |
||||
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); |
||||
/** @var array $arParams */ |
||||
/** @var array $arResult */ |
||||
/** @global CMain $APPLICATION */ |
||||
/** @global CUser $USER */ |
||||
/** @global CDatabase $DB */ |
||||
/** @var CBitrixComponentTemplate $this */ |
||||
/** @var string $templateName */ |
||||
/** @var string $templateFile */ |
||||
/** @var string $templateFolder */ |
||||
/** @var string $componentPath */ |
||||
/** @var CBitrixComponent $component */ |
||||
use Bitrix\Main\Loader; |
||||
use Bitrix\Main\ModuleManager; |
||||
|
||||
$this->setFrameMode(true); |
||||
|
||||
if (!isset($arParams['FILTER_VIEW_MODE']) || (string)$arParams['FILTER_VIEW_MODE'] == '') |
||||
$arParams['FILTER_VIEW_MODE'] = 'VERTICAL'; |
||||
$arParams['USE_FILTER'] = (isset($arParams['USE_FILTER']) && $arParams['USE_FILTER'] == 'Y' ? 'Y' : 'N'); |
||||
|
||||
$isVerticalFilter = ('Y' == $arParams['USE_FILTER'] && $arParams["FILTER_VIEW_MODE"] == "VERTICAL"); |
||||
$isSidebar = ($arParams["SIDEBAR_SECTION_SHOW"] == "Y" && isset($arParams["SIDEBAR_PATH"]) && !empty($arParams["SIDEBAR_PATH"])); |
||||
$isFilter = ($arParams['USE_FILTER'] == 'Y'); |
||||
|
||||
if ($isFilter) |
||||
{ |
||||
$arFilter = array( |
||||
"IBLOCK_ID" => $arParams["IBLOCK_ID"], |
||||
"ACTIVE" => "Y", |
||||
"GLOBAL_ACTIVE" => "Y", |
||||
); |
||||
if (0 < intval($arResult["VARIABLES"]["SECTION_ID"])) |
||||
$arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"]; |
||||
elseif ('' != $arResult["VARIABLES"]["SECTION_CODE"]) |
||||
$arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"]; |
||||
|
||||
$obCache = new CPHPCache(); |
||||
if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/catalog")) |
||||
{ |
||||
$arCurSection = $obCache->GetVars(); |
||||
} |
||||
elseif ($obCache->StartDataCache()) |
||||
{ |
||||
$arCurSection = array(); |
||||
if (Loader::includeModule("iblock")) |
||||
{ |
||||
$dbRes = CIBlockSection::GetList(array(), $arFilter, false, array("ID")); |
||||
|
||||
if(defined("BX_COMP_MANAGED_CACHE")) |
||||
{ |
||||
global $CACHE_MANAGER; |
||||
$CACHE_MANAGER->StartTagCache("/iblock/catalog"); |
||||
|
||||
if ($arCurSection = $dbRes->Fetch()) |
||||
$CACHE_MANAGER->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]); |
||||
|
||||
$CACHE_MANAGER->EndTagCache(); |
||||
} |
||||
else |
||||
{ |
||||
if(!$arCurSection = $dbRes->Fetch()) |
||||
$arCurSection = array(); |
||||
} |
||||
} |
||||
$obCache->EndDataCache($arCurSection); |
||||
} |
||||
if (!isset($arCurSection)) |
||||
$arCurSection = array(); |
||||
} |
||||
|
||||
// Добавляем номер страницы в заголовок |
||||
if (isset($arResult["VARIABLES"]["PAGE"]) && intval($arResult["VARIABLES"]["PAGE"]) > 1) { |
||||
$APPLICATION->SetPageProperty("title", $APPLICATION->GetTitle() . " - страница " . $arResult["VARIABLES"]["PAGE"]); |
||||
$APPLICATION->SetTitle($APPLICATION->GetTitle() . " - страница " . $arResult["VARIABLES"]["PAGE"]); |
||||
} |
||||
?> |
||||
<? |
||||
include($_SERVER["DOCUMENT_ROOT"] . "/" . $this->GetFolder() . "/section_vertical.php"); |
||||
?> |
@ -0,0 +1,33 @@ |
||||
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); |
||||
|
||||
$arThemes = array(); |
||||
|
||||
$arThemes["site"] = GetMessage("F_THEME_SITE"); |
||||
|
||||
$arThemesMessages = array( |
||||
"blue" => GetMessage("F_THEME_BLUE"), |
||||
"wood" => GetMessage("F_THEME_WOOD"), |
||||
"yellow" => GetMessage("F_THEME_YELLOW"), |
||||
"green" => GetMessage("F_THEME_GREEN"), |
||||
"red" => GetMessage("F_THEME_RED"), |
||||
"black" => GetMessage("F_THEME_BLACK") |
||||
); |
||||
$dir = trim(preg_replace("'[\\\\/]+'", "/", __DIR__."/themes/")); |
||||
if (is_dir($dir) && $directory = opendir($dir)) |
||||
{ |
||||
while (($file = readdir($directory)) !== false) |
||||
{ |
||||
if ($file != "." && $file != ".." && is_dir($dir.$file)) |
||||
$arThemes[$file] = (!empty($arThemesMessages[$file]) ? $arThemesMessages[$file] : mb_strtoupper(mb_substr($file, 0, 1)).mb_strtolower(mb_substr($file, 1))); |
||||
} |
||||
closedir($directory); |
||||
} |
||||
$arTemplateParameters = array( |
||||
"MENU_THEME"=>array( |
||||
"NAME" => GetMessage("MENU_THEME"), |
||||
"TYPE" => "LIST", |
||||
"VALUES" => $arThemes, |
||||
"PARENT" => "BASE", |
||||
) |
||||
); |
||||
?> |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,10 @@ |
||||
<? |
||||
$MESS["MENU_THEME"] = "Menü-Farbschema"; |
||||
$MESS["F_THEME_SITE"] = "Use site theme (for bitrix.eshop)"; |
||||
$MESS["F_THEME_BLUE"] = "Blau"; |
||||
$MESS["F_THEME_WOOD"] = "Holz"; |
||||
$MESS["F_THEME_YELLOW"] = "Gelb"; |
||||
$MESS["F_THEME_GREEN"] = "Grün"; |
||||
$MESS["F_THEME_RED"] = "Rot"; |
||||
$MESS["F_THEME_BLACK"] = "Dunkel"; |
||||
?> |
@ -0,0 +1,10 @@ |
||||
<? |
||||
$MESS["MENU_THEME"] = "Menu theme"; |
||||
$MESS["F_THEME_SITE"] = "Use site theme (for bitrix.eshop)"; |
||||
$MESS["F_THEME_BLUE"] = "Blue"; |
||||
$MESS["F_THEME_WOOD"] = "Bark"; |
||||
$MESS["F_THEME_YELLOW"] = "Yellow"; |
||||
$MESS["F_THEME_GREEN"] = "Green"; |
||||
$MESS["F_THEME_RED"] = "Red"; |
||||
$MESS["F_THEME_BLACK"] = "Dark"; |
||||
?> |
@ -0,0 +1,10 @@ |
||||
<? |
||||
$MESS["MENU_THEME"] = "Тема меню"; |
||||
$MESS["F_THEME_SITE"] = "Брать тему из настроек сайта (для решения bitrix.eshop)"; |
||||
$MESS["F_THEME_BLUE"] = "Синяя"; |
||||
$MESS["F_THEME_WOOD"] = "Дерево"; |
||||
$MESS["F_THEME_YELLOW"] = "Желтая"; |
||||
$MESS["F_THEME_GREEN"] = "Зеленая"; |
||||
$MESS["F_THEME_RED"] = "Красная"; |
||||
$MESS["F_THEME_BLACK"] = "Темная"; |
||||
?> |
@ -0,0 +1,254 @@ |
||||
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); |
||||
|
||||
if (empty($arResult)) |
||||
return; |
||||
|
||||
if (isset($arParams["MENU_THEME"]) && !empty($arParams["MENU_THEME"])) |
||||
{ |
||||
$arAvailableThemes = array(); |
||||
$dir = trim(preg_replace("'[\\\\/]+'", "/", __DIR__."/themes/")); |
||||
if (is_dir($dir) && $directory = opendir($dir)) |
||||
{ |
||||
while (($file = readdir($directory)) !== false) |
||||
{ |
||||
if ($file != "." && $file != ".." && is_dir($dir.$file)) |
||||
$arAvailableThemes[] = $file; |
||||
} |
||||
closedir($directory); |
||||
} |
||||
|
||||
if ($arParams["MENU_THEME"] == "site") |
||||
{ |
||||
$solution = COption::GetOptionString("main", "wizard_solution", "", SITE_ID); |
||||
if ($solution == "eshop") |
||||
{ |
||||
$theme = COption::GetOptionString("main", "wizard_eshop_adapt_theme_id", "blue", SITE_ID); |
||||
$arParams["MENU_THEME"] = (in_array($theme, $arAvailableThemes)) ? $theme : "blue"; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
$arParams["MENU_THEME"] = (in_array($arParams["MENU_THEME"], $arAvailableThemes)) ? $arParams["MENU_THEME"] : "blue"; |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
$arParams["MENU_THEME"] = "blue"; |
||||
} |
||||
|
||||
if(!function_exists("FillAllPicturesAndDescriptionsVertical")) |
||||
{ |
||||
function FillAllPicturesAndDescriptionsVertical(&$arAllItems, $arMenuItemsIDs) |
||||
{ |
||||
//find picture or description for the first level, if it hasn't |
||||
foreach ($arMenuItemsIDs as $itemIdLevel_1=>$arLevels2) |
||||
{ |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] || !$arAllItems[$itemIdLevel_1]["PARAMS"]["description"]) |
||||
{ |
||||
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3) |
||||
{ |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_2]["PARAMS"]["picture_src"]) |
||||
{ |
||||
$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] = $arAllItems[$itemIdLevel_2]["PARAMS"]["picture_src"]; |
||||
} |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] && $arAllItems[$itemIdLevel_2]["PARAMS"]["description"]) |
||||
{ |
||||
$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] = $arAllItems[$itemIdLevel_2]["PARAMS"]["description"]; |
||||
} |
||||
if ($arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_1]["PARAMS"]["description"]) |
||||
break; |
||||
} |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] || !$arAllItems[$itemIdLevel_1]["PARAMS"]["description"]) |
||||
{ |
||||
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3) |
||||
{ |
||||
foreach($arLevels3 as $itemIdLevel_3) |
||||
{ |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_3]["PARAMS"]["picture_src"]) |
||||
{ |
||||
$arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] = $arAllItems[$itemIdLevel_3]["PARAMS"]["picture_src"]; |
||||
} |
||||
if (!$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] && $arAllItems[$itemIdLevel_3]["PARAMS"]["description"]) |
||||
{ |
||||
$arAllItems[$itemIdLevel_1]["PARAMS"]["description"] = $arAllItems[$itemIdLevel_3]["PARAMS"]["description"]; |
||||
} |
||||
if ($arAllItems[$itemIdLevel_1]["PARAMS"]["picture_src"] && $arAllItems[$itemIdLevel_1]["PARAMS"]["description"]) |
||||
{ |
||||
break 2; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$pictureLevel_1 = ""; |
||||
$descriptionLevel_1 = ""; |
||||
$pictureLevel_2 = ""; |
||||
$descriptionLevel_2 = ""; |
||||
|
||||
foreach($arAllItems as $itemID=>$arItem) |
||||
{ |
||||
if ($arItem["DEPTH_LEVEL"] == "1") |
||||
{ |
||||
if ($arItem["IS_PARENT"]) |
||||
{ |
||||
$pictureLevel_1 = $arItem["PARAMS"]["picture_src"]; |
||||
$descriptionLevel_1 = $arItem["PARAMS"]["description"]; |
||||
} |
||||
$arAllItems[$itemID] = $arItem; |
||||
} |
||||
elseif($arItem["DEPTH_LEVEL"] == "2") |
||||
{ |
||||
if (!$arItem["PARAMS"]["picture_src"]) |
||||
$arItem["PARAMS"]["picture_src"] = $pictureLevel_1; |
||||
if (!$arItem["PARAMS"]["description"]) |
||||
$arItem["PARAMS"]["description"] = $descriptionLevel_1; |
||||
if ($arItem["IS_PARENT"]) |
||||
{ |
||||
$pictureLevel_2 = $arItem["PARAMS"]["picture_src"]; |
||||
$descriptionLevel_2 = $arItem["PARAMS"]["description"]; |
||||
} |
||||
$arAllItems[$itemID] = $arItem; |
||||
} |
||||
elseif($arItem["DEPTH_LEVEL"] == "3") |
||||
{ |
||||
if (!$arItem["PARAMS"]["picture_src"]) |
||||
$arItem["PARAMS"]["picture_src"] = $pictureLevel_2; |
||||
if (!$arItem["PARAMS"]["description"]) |
||||
$arItem["PARAMS"]["description"] = $descriptionLevel_2; |
||||
$arAllItems[$itemID] = $arItem; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$arSectionsInfo = array(); |
||||
if (CModule::IncludeModule("iblock")) |
||||
{ |
||||
$arFilter = array( |
||||
"TYPE"=>"catalog", |
||||
"SITE_ID"=>SITE_ID, |
||||
"ACTIVE" => "Y" |
||||
); |
||||
|
||||
$obCache = new CPHPCache(); |
||||
if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/menu")) |
||||
{ |
||||
$arSectionsInfo = $obCache->GetVars(); |
||||
} |
||||
elseif ($obCache->StartDataCache()) |
||||
{ |
||||
$dbIBlock = CIBlock::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), $arFilter); |
||||
$dbIBlock = new CIBlockResult($dbIBlock); |
||||
$curIblockID = 0; |
||||
if ($arIBlock = $dbIBlock->GetNext()) |
||||
{ |
||||
$dbSections = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $arIBlock["ID"]), false, array("ID", "SECTION_PAGE_URL", "PICTURE", "DESCRIPTION")); |
||||
while($arSections = $dbSections->GetNext()) |
||||
{ |
||||
$pictureSrc = CFile::GetFileArray($arSections["PICTURE"]); |
||||
|
||||
if ($pictureSrc) |
||||
$arResizePicture = CFile::ResizeImageGet( |
||||
$arSections["PICTURE"], |
||||
array("width" => 240, 'height'=>700), |
||||
BX_RESIZE_IMAGE_PROPORTIONAL, |
||||
true |
||||
); |
||||
|
||||
$arSectionsInfo[crc32($arSections["SECTION_PAGE_URL"])]["PICTURE"] = $pictureSrc ? $arResizePicture["src"] : false; |
||||
$arSectionsInfo[crc32($arSections["SECTION_PAGE_URL"])]["DESCRIPTION"] = $arSections["DESCRIPTION"]; |
||||
} |
||||
if(defined("BX_COMP_MANAGED_CACHE")) |
||||
{ |
||||
global $CACHE_MANAGER; |
||||
$CACHE_MANAGER->StartTagCache("/iblock/menu"); |
||||
$CACHE_MANAGER->RegisterTag("iblock_id_".$arIBlock["ID"]); |
||||
$CACHE_MANAGER->EndTagCache(); |
||||
} |
||||
} |
||||
$obCache->EndDataCache($arSectionsInfo); |
||||
} |
||||
} |
||||
|
||||
$arMenuItemsIDs = array(); |
||||
$arAllItems = array(); |
||||
foreach($arResult as $key=>$arItem) |
||||
{ |
||||
if($arItem["DEPTH_LEVEL"] > $arParams["MAX_LEVEL"]) |
||||
{ |
||||
unset($arResult[$key]); |
||||
continue; |
||||
} |
||||
|
||||
$arItem["PARAMS"]["item_id"] = crc32($arItem["LINK"]); |
||||
$arItem["PARAMS"]["picture_src"] = $arSectionsInfo[$arItem["PARAMS"]["item_id"]]["PICTURE"]; |
||||
$arItem["PARAMS"]["description"] = $arSectionsInfo[$arItem["PARAMS"]["item_id"]]["DESCRIPTION"]; |
||||
|
||||
if ($arItem["DEPTH_LEVEL"] == "1") |
||||
{ |
||||
$arMenuItemsIDs[$arItem["PARAMS"]["item_id"]] = array(); |
||||
if ($arItem["IS_PARENT"]) |
||||
{ |
||||
$curItemLevel_1 = $arItem["PARAMS"]["item_id"]; |
||||
} |
||||
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem; |
||||
} |
||||
elseif($arItem["DEPTH_LEVEL"] == "2") |
||||
{ |
||||
$arMenuItemsIDs[$curItemLevel_1][$arItem["PARAMS"]["item_id"]] = array(); |
||||
if ($arItem["IS_PARENT"]) |
||||
{ |
||||
$curItemLevel_2 = $arItem["PARAMS"]["item_id"]; |
||||
} |
||||
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem; |
||||
} |
||||
elseif($arItem["DEPTH_LEVEL"] == "3") |
||||
{ |
||||
$arMenuItemsIDs[$curItemLevel_1][$curItemLevel_2][] = $arItem["PARAMS"]["item_id"]; |
||||
$arAllItems[$arItem["PARAMS"]["item_id"]] = $arItem; |
||||
} |
||||
} |
||||
|
||||
FillAllPicturesAndDescriptionsVertical($arAllItems, $arMenuItemsIDs); |
||||
|
||||
$arMenuStructure = array(); |
||||
foreach ($arMenuItemsIDs as $itemIdLevel_1=>$arLevels2) |
||||
{ |
||||
$countItemsInRow = 18; |
||||
$arMenuStructure[$itemIdLevel_1] = array(); |
||||
$countLevels2 = count($arLevels2); |
||||
|
||||
if ($countLevels2 > 0) |
||||
{ |
||||
for ($i=1; $i<=3; $i++) |
||||
{ |
||||
$sumElementsInRow = 0; |
||||
foreach($arLevels2 as $itemIdLevel_2=>$arLevels3) |
||||
{ |
||||
$sumElementsInRow+= count($arLevels3) + 1; |
||||
$arMenuStructure[$itemIdLevel_1][$i][$itemIdLevel_2] = $arLevels3; |
||||
if ($sumElementsInRow > $countItemsInRow) |
||||
$countItemsInRow = $sumElementsInRow; |
||||
|
||||
unset($arLevels2[$itemIdLevel_2]); |
||||
$tmpCount = 0; |
||||
foreach($arLevels2 as $tmpItemIdLevel_2=>$arTmpLevels3) |
||||
{ |
||||
$tmpCount+= 1 + count($arTmpLevels3); |
||||
} |
||||
|
||||
if ($tmpCount <= $countItemsInRow*(3-$i) && $countItemsInRow<=$sumElementsInRow) |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$arResult = array(); |
||||
$arResult["ALL_ITEMS"] = $arAllItems; |
||||
$arResult["ALL_ITEMS_ID"] = $arMenuItemsIDs; |
||||
$arResult["MENU_STRUCTURE"] = $arMenuStructure; |
||||
?> |
||||
|
@ -0,0 +1,124 @@ |
||||
(function(window) { |
||||
|
||||
if (!window.BX || BX.CatalogVertMenu) |
||||
return; |
||||
|
||||
BX.CatalogVertMenu = { |
||||
items : {}, |
||||
idCnt : 1, |
||||
currentItem : null, |
||||
overItem : null, |
||||
outItem : null, |
||||
timeoutOver : null, |
||||
timeoutOut : null, |
||||
|
||||
getItem : function(item) |
||||
{ |
||||
if (!BX.type.isDomNode(item)) |
||||
return null; |
||||
|
||||
var id = !item.id || !BX.type.isNotEmptyString(item.id) ? (item.id = "menu-item-vert-" + this.idCnt++) : item.id; |
||||
|
||||
if (!this.items[id]) |
||||
this.items[id] = new CatalogVertMenuItem(item); |
||||
|
||||
return this.items[id]; |
||||
}, |
||||
|
||||
itemOver : function(item) |
||||
{ |
||||
var menuItem = this.getItem(item); |
||||
if (!menuItem) |
||||
return; |
||||
|
||||
if (this.outItem == menuItem) |
||||
{ |
||||
clearTimeout(menuItem.timeoutOut); |
||||
} |
||||
|
||||
this.overItem = menuItem; |
||||
|
||||
if (menuItem.timeoutOver) |
||||
{ |
||||
clearTimeout(menuItem.timeoutOver); |
||||
} |
||||
|
||||
menuItem.timeoutOver = setTimeout(function() { |
||||
if (BX.CatalogVertMenu.overItem == menuItem) |
||||
{ |
||||
menuItem.itemOver(); |
||||
} |
||||
}, 100); |
||||
}, |
||||
|
||||
itemOut : function(item) |
||||
{ |
||||
var menuItem = this.getItem(item); |
||||
if (!menuItem) |
||||
return; |
||||
|
||||
this.outItem = menuItem; |
||||
|
||||
if (menuItem.timeoutOut) |
||||
{ |
||||
clearTimeout(menuItem.timeoutOut); |
||||
} |
||||
|
||||
menuItem.timeoutOut = setTimeout(function() { |
||||
|
||||
if (menuItem != BX.CatalogVertMenu.overItem) |
||||
{ |
||||
menuItem.itemOut(); |
||||
} |
||||
if (menuItem == BX.CatalogVertMenu.outItem) |
||||
{ |
||||
menuItem.itemOut(); |
||||
} |
||||
|
||||
}, 100); |
||||
}, |
||||
|
||||
changeSectionPicture : function(element) |
||||
{ |
||||
var descrSpan = BX.nextSibling(element); |
||||
var curDescr = descrSpan.innerHTML || ''; |
||||
if (descrSpan) |
||||
{ |
||||
var curImgWrapObj = BX.nextSibling(descrSpan); |
||||
var curImgObj = BX.clone(BX.firstChild(curImgWrapObj)); |
||||
} |
||||
var parentObj = BX.hasClass(element, 'bx_hma_one_lvl') ? element : BX.findParent(element, {className:'bx_hma_one_lvl'}); |
||||
var sectionImgObj = BX.findChild(parentObj, {className:'bx_section_picture'}, true, false); |
||||
sectionImgObj.innerHTML = ""; |
||||
if (curImgObj) |
||||
{ |
||||
sectionImgObj.appendChild(curImgObj); |
||||
} |
||||
var sectionDescrObj = BX.findChild(parentObj, {className:'bx_section_description'}, true, false); |
||||
sectionDescrObj.innerHTML = curDescr; |
||||
BX.previousSibling(sectionDescrObj).innerHTML = element.innerHTML; |
||||
sectionImgObj.parentNode.href = element.href; |
||||
} |
||||
}; |
||||
|
||||
var CatalogVertMenuItem = function(item) |
||||
{ |
||||
this.element = item; |
||||
this.popup = BX.findChild(item, { className: "bx_children_container" }, false, false); |
||||
}; |
||||
|
||||
CatalogVertMenuItem.prototype.itemOver = function() |
||||
{ |
||||
if (!BX.hasClass(this.element, "hover")) |
||||
{ |
||||
BX.addClass(this.element, "hover"); |
||||
} |
||||
}; |
||||
|
||||
CatalogVertMenuItem.prototype.itemOut = function() |
||||
{ |
||||
BX.removeClass(this.element, "hover"); |
||||
}; |
||||
|
||||
})(window); |
||||
|
@ -0,0 +1 @@ |
||||
{"version":3,"file":"script.min.js","sources":["script.js"],"names":["window","BX","CatalogVertMenu","items","idCnt","currentItem","overItem","outItem","timeoutOver","timeoutOut","getItem","item","type","isDomNode","id","isNotEmptyString","this","CatalogVertMenuItem","itemOver","menuItem","clearTimeout","setTimeout","itemOut","changeSectionPicture","element","descrSpan","nextSibling","curDescr","innerHTML","curImgWrapObj","curImgObj","clone","firstChild","parentObj","hasClass","findParent","className","sectionImgObj","findChild","appendChild","sectionDescrObj","previousSibling","parentNode","href","popup","prototype","addClass","removeClass"],"mappings":"CAAA,SAAUA,GAET,IAAKA,EAAOC,IAAMA,GAAGC,gBACpB,MAEDD,IAAGC,iBACFC,SACAC,MAAQ,EACRC,YAAc,KACdC,SAAW,KACXC,QAAU,KACVC,YAAc,KACdC,WAAa,KAEbC,QAAU,SAASC,GAElB,IAAKV,GAAGW,KAAKC,UAAUF,GACtB,MAAO,KAER,IAAIG,IAAMH,EAAKG,KAAOb,GAAGW,KAAKG,iBAAiBJ,EAAKG,IAAOH,EAAKG,GAAK,kBAAoBE,KAAKZ,QAAWO,EAAKG,EAE9G,KAAKE,KAAKb,MAAMW,GACfE,KAAKb,MAAMW,GAAM,GAAIG,GAAoBN,EAE1C,OAAOK,MAAKb,MAAMW,IAGnBI,SAAW,SAASP,GAEnB,GAAIQ,GAAWH,KAAKN,QAAQC,EAC5B,KAAKQ,EACJ,MAED,IAAIH,KAAKT,SAAWY,EACpB,CACCC,aAAaD,EAASV,YAGvBO,KAAKV,SAAWa,CAEhB,IAAIA,EAASX,YACb,CACCY,aAAaD,EAASX,aAGvBW,EAASX,YAAca,WAAW,WACjC,GAAIpB,GAAGC,gBAAgBI,UAAYa,EACnC,CACCA,EAASD,aAER,MAGJI,QAAU,SAASX,GAElB,GAAIQ,GAAWH,KAAKN,QAAQC,EAC5B,KAAKQ,EACJ,MAEDH,MAAKT,QAAUY,CAEf,IAAIA,EAASV,WACb,CACCW,aAAaD,EAASV,YAGvBU,EAASV,WAAaY,WAAW,WAEhC,GAAIF,GAAYlB,GAAGC,gBAAgBI,SACnC,CACCa,EAASG,UAEV,GAAIH,GAAYlB,GAAGC,gBAAgBK,QACnC,CACCY,EAASG,YAGR,MAGJC,qBAAuB,SAASC,GAE/B,GAAIC,GAAYxB,GAAGyB,YAAYF,EAC/B,IAAIG,GAAWF,EAAUG,WAAa,EACtC,IAAIH,EACJ,CACC,GAAII,GAAgB5B,GAAGyB,YAAYD,EACnC,IAAIK,GAAY7B,GAAG8B,MAAM9B,GAAG+B,WAAWH,IAExC,GAAII,GAAYhC,GAAGiC,SAASV,EAAS,kBAAoBA,EAAUvB,GAAGkC,WAAWX,GAAUY,UAAU,kBACrG,IAAIC,GAAgBpC,GAAGqC,UAAUL,GAAYG,UAAU,sBAAuB,KAAM,MACpFC,GAAcT,UAAY,EAC1B,IAAIE,EACJ,CACCO,EAAcE,YAAYT,GAE3B,GAAIU,GAAkBvC,GAAGqC,UAAUL,GAAYG,UAAU,0BAA2B,KAAM,MAC1FI,GAAgBZ,UAAYD,CAC5B1B,IAAGwC,gBAAgBD,GAAiBZ,UAAYJ,EAAQI,SACxDS,GAAcK,WAAWC,KAAOnB,EAAQmB,MAI1C,IAAI1B,GAAsB,SAASN,GAElCK,KAAKQ,QAAUb,CACfK,MAAK4B,MAAQ3C,GAAGqC,UAAU3B,GAAQyB,UAAW,yBAA2B,MAAO,OAGhFnB,GAAoB4B,UAAU3B,SAAW,WAExC,IAAKjB,GAAGiC,SAASlB,KAAKQ,QAAS,SAC/B,CACCvB,GAAG6C,SAAS9B,KAAKQ,QAAS,UAI5BP,GAAoB4B,UAAUvB,QAAU,WAEvCrB,GAAG8C,YAAY/B,KAAKQ,QAAS,YAG5BxB"} |
@ -0,0 +1,2 @@ |
||||
(function(t){if(!t.BX||BX.CatalogVertMenu)return;BX.CatalogVertMenu={items:{},idCnt:1,currentItem:null,overItem:null,outItem:null,timeoutOver:null,timeoutOut:null,getItem:function(t){if(!BX.type.isDomNode(t))return null;var i=!t.id||!BX.type.isNotEmptyString(t.id)?t.id="menu-item-vert-"+this.idCnt++:t.id;if(!this.items[i])this.items[i]=new e(t);return this.items[i]},itemOver:function(t){var e=this.getItem(t);if(!e)return;if(this.outItem==e){clearTimeout(e.timeoutOut)}this.overItem=e;if(e.timeoutOver){clearTimeout(e.timeoutOver)}e.timeoutOver=setTimeout(function(){if(BX.CatalogVertMenu.overItem==e){e.itemOver()}},100)},itemOut:function(t){var e=this.getItem(t);if(!e)return;this.outItem=e;if(e.timeoutOut){clearTimeout(e.timeoutOut)}e.timeoutOut=setTimeout(function(){if(e!=BX.CatalogVertMenu.overItem){e.itemOut()}if(e==BX.CatalogVertMenu.outItem){e.itemOut()}},100)},changeSectionPicture:function(t){var e=BX.nextSibling(t);var i=e.innerHTML||"";if(e){var n=BX.nextSibling(e);var r=BX.clone(BX.firstChild(n))}var u=BX.hasClass(t,"bx_hma_one_lvl")?t:BX.findParent(t,{className:"bx_hma_one_lvl"});var o=BX.findChild(u,{className:"bx_section_picture"},true,false);o.innerHTML="";if(r){o.appendChild(r)}var m=BX.findChild(u,{className:"bx_section_description"},true,false);m.innerHTML=i;BX.previousSibling(m).innerHTML=t.innerHTML;o.parentNode.href=t.href}};var e=function(t){this.element=t;this.popup=BX.findChild(t,{className:"bx_children_container"},false,false)};e.prototype.itemOver=function(){if(!BX.hasClass(this.element,"hover")){BX.addClass(this.element,"hover")}};e.prototype.itemOut=function(){BX.removeClass(this.element,"hover")}})(window); |
||||
//# sourceMappingURL=script.map.js
|
@ -0,0 +1,222 @@ |
||||
.bx_vertical_menu_advanced{ |
||||
border-left:7px solid #e3eaef; |
||||
background:#f1f4f7; |
||||
border-radius:4px; |
||||
position:relative; |
||||
box-shadow:0 0 1px 1px #dcdcdc; |
||||
} |
||||
.bx_vertical_menu_advanced>ul{ |
||||
display:block; |
||||
margin:0 0 10px 0; |
||||
padding:0; |
||||
width:100%; |
||||
border-radius:5px; |
||||
background:#fff; |
||||
list-style:none; |
||||
} |
||||
|
||||
/* 1 уровень */ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl{ |
||||
display:block; |
||||
padding:0; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl>a{ |
||||
position:relative; |
||||
z-index:105; |
||||
display:block; |
||||
padding:10px 0 10px 12px; |
||||
border-bottom: 1px solid #e3eaef; |
||||
color:#000; |
||||
vertical-align:middle; |
||||
text-align:left; |
||||
text-decoration:none; |
||||
text-shadow:0 1px 1px rgba(255,255,255,.8); |
||||
font-size:14px; |
||||
line-height:16px; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl:first-child, |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl:first-child>a{border-radius:0 4px 0 0} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl:last-child, |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl:last-child>a {border-radius:0 0 4px 0} |
||||
.bx_vertical_menu_advanced ul:last-child .bx_hma_one_lvl:last-child>a{border-bottom:none} |
||||
|
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl>a{ |
||||
-webkit-transition: border-color 0s ease; |
||||
-moz-transition: border-color 0s ease; |
||||
-o-transition: border-color 0s ease; |
||||
-ms-transition: border-color 0s ease; |
||||
transition: border-color 0s ease; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover{ |
||||
padding:1px 0 0; |
||||
border:none; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover>a{ |
||||
margin-left:-11px; |
||||
padding:10px 0 10px 12px; |
||||
width:100%; |
||||
border:none; |
||||
border-right:2px; |
||||
background:#fff; |
||||
box-shadow:-1px 2px 3px 0px rgba(1,1,1,.22); |
||||
font-weight:bold; |
||||
line-height:16px; |
||||
box-sizing:content-box; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.dropdown.hover{} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.dropdown.hover>a{z-index:1500} |
||||
|
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl>a:active, |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.current>a{} |
||||
/* // 1й уровень */ |
||||
/* Контейнер*/ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container{ |
||||
position:absolute; |
||||
top:-1px; |
||||
left:100%; |
||||
z-index:1300; |
||||
display:none; |
||||
overflow:hidden; |
||||
-webkit-box-sizing:border-box; |
||||
-moz-box-sizing:border-box; |
||||
box-sizing:border-box; |
||||
border-top:1px solid rgba(1,1,1,.1); |
||||
border-radius:2px; |
||||
background:#fff; |
||||
box-shadow:0 5px 10px 0 rgba(1,1,1,.29); |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl.hover .bx_children_container{display:block} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block{ |
||||
float:left; |
||||
-webkit-box-sizing:border-box; |
||||
-moz-box-sizing:border-box; |
||||
box-sizing:border-box; |
||||
margin-bottom:-20000px; |
||||
padding:10px 12px; |
||||
padding-bottom:20000px; |
||||
min-width:130px; |
||||
max-width:280px; |
||||
border-left:1px solid #f2f2f2; |
||||
background:#fff; |
||||
} |
||||
.bx_shadow_fix{display:none} |
||||
.bx_vertical_menu_advanced .dropdown:hover .bx_shadow_fix, |
||||
.bx_vertical_menu_advanced .dropdown.hover .bx_shadow_fix{ |
||||
position: absolute; |
||||
top: -1px; |
||||
right: -2px; |
||||
bottom: 0; |
||||
z-index: 1500; |
||||
display: block; |
||||
width: 5px; |
||||
background: #fff; |
||||
opacity: 1; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b1{min-width:180px} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b2{min-width:360px} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b3{min-width:540px} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b4{min-width:720px} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block:first-child{border-left:none} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b1 .bx_children_block{width:100%} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b2 .bx_children_block{width:50%} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b3 .bx_children_block{width:33.3%} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container.b4 .bx_children_block{width:25%} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block.advanced{ |
||||
border-left:none; |
||||
background:#f7fafb; |
||||
box-shadow:inset 5px 0 7px -5px rgba(0,0,0,.12); |
||||
} |
||||
/*// Контейнер*/ |
||||
/* 2й уровень*/ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl ul{ |
||||
display:block; |
||||
margin:0; |
||||
padding:0 0 14px 0; |
||||
list-style:none; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel { |
||||
display: none; |
||||
-webkit-box-sizing: border-box; |
||||
-moz-box-sizing: border-box; |
||||
box-sizing: border-box; |
||||
text-align: center; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{ |
||||
display:block; |
||||
padding:5px 10px; |
||||
} |
||||
|
||||
/*.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{ |
||||
color: #366181; |
||||
}*/ |
||||
/* //2й уровень*/ |
||||
/* 3й уровень */ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul{border-bottom:1px solid #f2f2f2} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent:last-child ul{border-bottom:none} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul li{line-height:24px} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a{ |
||||
display:block; |
||||
padding:5px 10px; |
||||
} |
||||
/*.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background:#f0f6f8; |
||||
box-shadow:inset 0 1px 1px 0 #e3e9eb; |
||||
}*/ |
||||
/* // 3й уровень */ |
||||
|
||||
/* Панель */ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_advanced_panel{ |
||||
display:none; |
||||
-webkit-box-sizing:border-box; |
||||
-moz-box-sizing:border-box; |
||||
box-sizing:border-box; |
||||
text-align:center; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_block.advanced .bx_children_advanced_panel{display:block !important} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel img{ |
||||
-webkit-box-sizing:border-box; |
||||
-moz-box-sizing:border-box; |
||||
box-sizing:border-box; |
||||
max-width:100%; |
||||
max-height:220px; |
||||
border:1px solid #e7e9ea; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_advanced_panel .bx_item_description{ |
||||
max-width:100%; |
||||
max-height:220px; |
||||
color:#000; |
||||
text-align:left; |
||||
white-space:normal; |
||||
font-weight:normal; |
||||
font-size:12px; |
||||
line-height:18px; |
||||
} |
||||
|
||||
/* // Панель*/ |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block>ul>li{ |
||||
display:block; |
||||
background:#fff; |
||||
} |
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl .bx_children_container .bx_children_block>ul>li>a{ |
||||
display:block; |
||||
color:#20394c; |
||||
text-decoration:none; |
||||
font-weight:bold; |
||||
font-size:15px; |
||||
line-height:23px; |
||||
} |
||||
|
||||
.bx_vertical_menu_advanced .bx_hma_one_lvl ul li ul li a{ |
||||
color:#000; |
||||
text-decoration:none; |
||||
font-size:13px; |
||||
line-height:16px; |
||||
} |
||||
|
||||
@media (max-width:569px) { |
||||
.bx_vertical_menu_advanced{display:none} |
||||
.header_inner_bottom_line{ |
||||
overflow:hidden; |
||||
height:auto; |
||||
} |
||||
} |
@ -0,0 +1,48 @@ |
||||
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); |
||||
|
||||
if (empty($arResult["ALL_ITEMS"])) |
||||
return; |
||||
|
||||
if (file_exists($_SERVER["DOCUMENT_ROOT"].$this->GetFolder().'/themes/'.$arParams["MENU_THEME"].'/colors.css')) |
||||
$APPLICATION->SetAdditionalCSS($this->GetFolder().'/themes/'.$arParams["MENU_THEME"].'/colors.css'); |
||||
|
||||
CJSCore::Init(); |
||||
|
||||
$menuBlockId = "catalog_menu_".$this->randString(); |
||||
//debug($arResult); |
||||
?> |
||||
|
||||
<div class="filter__item filter__item--list"> |
||||
|
||||
<?foreach($arResult["MENU_STRUCTURE"] as $itemID => $arColumns):?> <!-- first level-->
|
||||
|
||||
|
||||
<a class="filter__category is-active filter__category--base" href="<?=$arResult["ALL_ITEMS"][$itemID]["LINK"]?>" >
|
||||
<?=$arResult["ALL_ITEMS"][$itemID]["TEXT"]?> |
||||
<!-- <span>48</span>--> |
||||
</a> |
||||
|
||||
|
||||
<?foreach($arColumns as $key=>$arRow):?> |
||||
|
||||
|
||||
<?foreach($arRow as $itemIdLevel_2=>$arLevel_3):?> <!-- second level-->
|
||||
|
||||
<a class="filter__category" href="<?=$arResult["ALL_ITEMS"][$itemIdLevel_2]["LINK"]?>">
|
||||
<?=$arResult["ALL_ITEMS"][$itemIdLevel_2]["TEXT"]?> |
||||
<!-- <span>10</span>--> |
||||
</a> |
||||
|
||||
<?endforeach;?> |
||||
|
||||
|
||||
<?endforeach;?> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?endforeach;?> |
||||
|
||||
|
||||
</div> |
@ -0,0 +1,27 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_black{ |
||||
border-left:7px solid #e3eaef; |
||||
background:#f1f4f7; |
||||
} |
||||
/* // 1st level */ |
||||
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl>a{ |
||||
border-bottom: 1px solid #e3eaef; |
||||
} |
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C} |
||||
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background: #F0F6F8; |
||||
box-shadow: inset 0 1px 1px 0 #E3E9EB; |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
||||
|
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_black{border-left:7px solid #e3eaef;background:#f1f4f7}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl>a{border-bottom:1px solid #e3eaef}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_black .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb} |
@ -0,0 +1,25 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_blue{ |
||||
border-left:7px solid #e4f0f7; |
||||
background:#f6f9fb; |
||||
} |
||||
/* // 1st level */ |
||||
|
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C} |
||||
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background: #F0F6F8; |
||||
box-shadow: inset 0 1px 1px 0 #E3E9EB; |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
||||
|
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_blue{border-left:7px solid #e4f0f7;background:#f6f9fb}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_blue .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb} |
@ -0,0 +1,25 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_green{ |
||||
border-left:7px solid #a7d380; |
||||
background:#bdeb94; |
||||
} |
||||
/* // 1st level */ |
||||
|
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #746b21} |
||||
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #564f17} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background:#f7f3e0; |
||||
box-shadow:inset 0 1px 1px 0 #ebe9e3 |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
||||
|
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_green{border-left:7px solid #a7d380;background:#bdeb94}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#746b21}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#564f17}.bx_vertical_menu_advanced.bx_green .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3} |
@ -0,0 +1,26 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_red{ |
||||
border-left:7px solid #f0bdb5; |
||||
background:#fbf1f0; |
||||
} |
||||
/* // 1st level */ |
||||
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl>a{ |
||||
border-bottom: 1px solid #f9e6e3; |
||||
} |
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #742B21} |
||||
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #742121} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background:#f7f3e0; |
||||
box-shadow:inset 0 1px 1px 0 #ebe9e3 |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_red{border-left:7px solid #f0bdb5;background:#fbf1f0}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl>a{border-bottom:1px solid #f9e6e3}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#742b21}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#742121}.bx_vertical_menu_advanced.bx_red .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3} |
@ -0,0 +1,25 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_wood{ |
||||
border-left:7px solid #e4f0f7; |
||||
background:#f6f9fb; |
||||
} |
||||
/* // 1st level */ |
||||
|
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #20394C} |
||||
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #366181} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background: #F0F6F8; |
||||
box-shadow: inset 0 1px 1px 0 #E3E9EB; |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
||||
|
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_wood{border-left:7px solid #e4f0f7;background:#f6f9fb}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#20394c}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#366181}.bx_vertical_menu_advanced.bx_wood .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f0f6f8;box-shadow:inset 0 1px 1px 0 #e3e9eb} |
@ -0,0 +1,25 @@ |
||||
/* 1st level */ |
||||
.bx_vertical_menu_advanced.bx_yellow{ |
||||
border-left:7px solid #F2E9B2; |
||||
background:#FEFAD5; |
||||
} |
||||
/* // 1st level */ |
||||
|
||||
/* The Container */ |
||||
/*// Container */ |
||||
|
||||
/* 2nd level*/ |
||||
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color: #746b21} |
||||
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color: #564f17} |
||||
/* // 2nd level*/ |
||||
|
||||
/* 3rd level */ |
||||
.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{ |
||||
background:#f7f3e0; |
||||
box-shadow:inset 0 1px 1px 0 #ebe9e3 |
||||
} |
||||
/* // 3rd level */ |
||||
|
||||
/* Panel */ |
||||
/* // The Panel*/ |
||||
|
@ -0,0 +1 @@ |
||||
.bx_vertical_menu_advanced.bx_yellow{border-left:7px solid #f2e9b2;background:#fefad5}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a{color:#746b21}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent>a:hover{color:#564f17}.bx_vertical_menu_advanced.bx_yellow .bx_hma_one_lvl .bx_children_container .bx_children_block li.parent ul a:hover{background:#f7f3e0;box-shadow:inset 0 1px 1px 0 #ebe9e3} |
@ -0,0 +1,5 @@ |
||||
<? |
||||
return array( |
||||
"NAME" => "Услуги (кастомный шаблон)", |
||||
"DESCRIPTION" => "Шаблон для компонента bitrix:news (услуги)", |
||||
); |
@ -0,0 +1,43 @@ |
||||
.services-list { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 24px; |
||||
} |
||||
.service-item { |
||||
border: 1px solid #e0e0e0; |
||||
border-radius: 8px; |
||||
padding: 16px; |
||||
width: 300px; |
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.04); |
||||
background: #fff; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: flex-start; |
||||
} |
||||
.service-item h2 { |
||||
font-size: 1.2em; |
||||
margin: 0 0 8px 0; |
||||
} |
||||
.service-item img { |
||||
max-width: 100%; |
||||
border-radius: 4px; |
||||
margin-bottom: 8px; |
||||
} |
||||
.service-desc { |
||||
margin-bottom: 8px; |
||||
color: #444; |
||||
} |
||||
.service-price { |
||||
font-weight: bold; |
||||
color: #1a7f37; |
||||
margin-bottom: 8px; |
||||
} |
||||
.service-item a { |
||||
margin-top: auto; |
||||
color: #1976d2; |
||||
text-decoration: none; |
||||
font-weight: 500; |
||||
} |
||||
.service-item a:hover { |
||||
text-decoration: underline; |
||||
} |
@ -0,0 +1,21 @@ |
||||
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> |
||||
<div class="services-list"> |
||||
<?foreach( |
||||
$arResult["ITEMS"] as $arItem):?> |
||||
<div class="service-item"> |
||||
<h2><?=$arItem["NAME"]?></h2>
|
||||
<?if($arItem["PREVIEW_PICTURE"]):?> |
||||
<img src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" alt="<?=$arItem["NAME"]?>">
|
||||
<?endif;?> |
||||
<div class="service-desc"> |
||||
<?=$arItem["PREVIEW_TEXT"]?> |
||||
</div> |
||||
<?if($arItem["PROPERTIES"]["PRICE"]["VALUE"]):?> |
||||
<div class="service-price"> |
||||
Цена: <?=$arItem["PROPERTIES"]["PRICE"]["VALUE"]?> |
||||
</div> |
||||
<?endif;?> |
||||
<a href="<?=$arItem["DETAIL_PAGE_URL"]?>">Подробнее</a>
|
||||
</div> |
||||
<?endforeach;?> |
||||
</div> |