$APPLICATION->IncludeComponent('intec.seo:iblocks.section.extend.filter', '', [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'SECTION_ID' => $arSection['ID'],
'SECTIONS_ID' => ArrayHelper::getValue($arSection, $arSectionsExtending['PROPERTY']),
'COUNT' => $arSectionsExtending['COUNT'],
'HAS_COUNT' => $elementCount,
'CURRENT_URL' => $APPLICATION->GetCurPage(),
'FILTER_NAME' => 'arCatalogSectionsExtendingFilter',
'INCLUDE_SUBSECTIONS' => 'Y',
'CACHE_TYPE' => $arParams['CACHE_TYPE'],
'CACHE_TIME' => $arParams['CACHE_TIME']
], $component);
$APPLICATION->IncludeComponent('intec.seo:iblocks.metadata.loader', '', [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'SECTION_ID' => $arSection['ID'],
'TYPE' => 'section',
'MODE' => 'single',
'METADATA_SET' => 'Y',
'CACHE_TYPE' => $arParams['CACHE_TYPE'],
'CACHE_TIME' => $arParams['CACHE_TIME']
], $component);
$arArticlesExtending['RESULT'] = $APPLICATION->IncludeComponent('intec.seo:iblocks.articles.extend.filter', '', [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'SECTION_ID' => $arSection['ID'],
'ELEMENT_ID' => null,
'FILTER_MODE' => 'many',
'QUANTITY' => $arArticlesExtending['QUANTITY'],
'CURRENT_URL' => $APPLICATION->GetCurPage(),
'FILTER_NAME' => 'arCatalogArticlesExtendingFilter',
'INCLUDE_SUBSECTIONS' => 'Y',
'CACHE_TYPE' => $arParams['CACHE_TYPE'],
'CACHE_TIME' => $arParams['CACHE_TIME']
], $component);
if (!empty($arArticlesExtending['RESULT']) && !empty($arArticlesExtending['RESULT']['FILTER'])) {
if ($arArticlesExtending['RESULT']['FILTER_MODE_SINGLE'])
$arArticlesExtending['PARAMETERS']['IBLOCK_ID'] = $arArticlesExtending['RESULT']['FILTER']['IBLOCK_ID'];
$arArticlesExtending['PARAMETERS']['SORT_ORDER1'] = $arArticlesExtending['RESULT']['FILTER']['ID'];
if (!empty($arArticlesExtending['TITLE']) || Type::isNumeric($arArticlesExtending['TITLE'])) {
echo $arArticlesExtending['TITLE'];
} ;
$APPLICATION->IncludeComponent(
'bitrix:news.list',
$arArticlesExtending['TEMPLATE'],
$arArticlesExtending['PARAMETERS'],
$component
);
};
$APPLICATION->IncludeComponent('intec.seo:filter.meta', '', [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'SECTION_ID' => $arSection['ID'],
'CACHE_TYPE' => $arParams['CACHE_TYPE'],
'CACHE_TIME' => $arParams['CACHE_TIME']
], $component);
if ($arTags['USE']) {
$this->SetViewTarget($sTemplateId.'-tags');
$APPLICATION->IncludeComponent('intec.seo:filter.tags', '', [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'SECTION_ID' => $arSection['ID'],
'INCLUDE_SUBSECTIONS' => $arParams['INCLUDE_SUBSECTIONS'],
'CACHE_TYPE' => $arParams['CACHE_TYPE'],
'CACHE_TIME' => $arParams['CACHE_TIME']
], $component);
$this->EndViewTarget();
};
Аналогичные действия необходимо произвести с файлом section_horizontal.php
Необходимо создать файл result_modifier.php и весь стандартный код в нем заменить на этот
use Bitrix\Main\Data\Cache;
use Bitrix\Main\Loader;
use intec\core\collections\Arrays;
use intec\core\helpers\ArrayHelper;
use intec\core\helpers\Html;
use intec\core\helpers\Type;
/**
* @var array $arParams
* @var array $arResult
* @var CBitrixComponentTemplate $this
*/
if (!Loader::includeModule('iblock'))
return;
if (!Loader::includeModule('intec.core'))
return;
$arParams = ArrayHelper::merge([
'INTEREST_PRODUCTS_SHOW' => 'N',
'INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE' => 'N',
'INTEREST_PRODUCTS_CATEGORIES_PROPERTY' => null,
'INTEREST_PRODUCTS_CATEGORIES' => null,
'INTEREST_PRODUCTS_TITLE' => null,
'INTEREST_PRODUCTS_POSITION' => 'footer',
'ADDITIONAL_ARTICLES_SHOW' => 'N',
'ADDITIONAL_ARTICLES_HEADER_SHOW' => 'N',
'ADDITIONAL_ARTICLES_HEADER_TEXT' => null,
], $arParams);
if (empty($arParams['FILTER_NAME']))
$arParams['FILTER_NAME'] = 'arrCatalogFilter';
$arIBlock = null;
$arSection = null;
if (!empty($arParams['IBLOCK_ID'])) {
$oCache = Cache::createInstance();
$arFilter = [
'ID' => $arParams['IBLOCK_ID'],
'ACTIVE' => 'Y'
];
if ($oCache->initCache(36000, 'IBLOCK'.serialize($arFilter), '/iblock/catalog')) {
$arIBlock = $oCache->getVars();
} else if ($oCache->startDataCache()) {
$arIBlocks = Arrays::fromDBResult(CIBlock::GetList([], $arFilter));
$arIBlock = $arIBlocks->getFirst();
$oCache->endDataCache($arIBlock);
}
}
if (
!empty($arResult['VARIABLES']['SECTION_ID']) ||
!empty($arResult['VARIABLES']['SECTION_CODE'])
) {
$oCache = Cache::createInstance();
$arFilter = [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y'
];
if (!empty($arResult['VARIABLES']['SECTION_ID'])) {
$arFilter['ID'] = $arResult['VARIABLES']['SECTION_ID'];
} else {
$arFilter['CODE'] = $arResult['VARIABLES']['SECTION_CODE'];
}
if ($oCache->initCache(36000, 'SECTION'.serialize($arFilter), '/iblock/catalog')) {
$arSection = $oCache->getVars();
} else if ($oCache->startDataCache()) {
$arSections = Arrays::fromDBResult(CIBlockSection::GetList([], $arFilter, false, [
'*',
'UF_*'
]));
$arSection = $arSections->getFirst();
$oCache->endDataCache($arSection);
}
}
$arResult['IBLOCK'] = $arIBlock;
$arResult['SECTION'] = $arSection;
$arResult['PRODUCTS'] = [
'INTEREST' => [
'SHOW' => $arParams['INTEREST_PRODUCTS_SHOW'] === 'Y',
'PROPERTY' => [
'USE' => $arParams['INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'] === 'Y',
'VALUE' => $arParams['INTEREST_PRODUCTS_CATEGORIES_PROPERTY'],
'NAME' => null,
],
'TITLE' => $arParams['INTEREST_PRODUCTS_TITLE'],
'COUNT' => $arParams['INTEREST_PRODUCTS_COUNT'] > 0 ? $arParams['INTEREST_PRODUCTS_COUNT'] : 1,
'POSITION' => $arParams['INTEREST_PRODUCTS_POSITION'],
'CATEGORIES' => $arParams['INTEREST_PRODUCTS_CATEGORIES']
],
];
$arResult['ADDITIONAL'] = [
'ARTICLES' => [
'SHOW' => $arParams['ADDITIONAL_ARTICLES_SHOW'] === 'Y' && !empty($arParams['PROPERTY_ADDITIONAL_ARTICLES']),
'HEADER' => [
'SHOW' => $arParams['ADDITIONAL_ARTICLES_HEADER_SHOW'] === 'Y',
'TEXT' => $arParams['~ADDITIONAL_ARTICLES_HEADER_TEXT']
]
],
];
$arAdditional = function ($paramName) use (&$arResult, &$arParams) {
$arAdditional = [];
if (!empty($arParams[$paramName])) {
$arProperty = ArrayHelper::getValue($arResult, [
'SECTION',
$arParams[$paramName]
]);
if (!empty($arProperty)) {
foreach ($arProperty as $sValue) {
if (!empty($sValue))
$arAdditional[] = $sValue;
}
}
}
return $arAdditional;
};
$arAdditionalArticles = $arAdditional('PROPERTY_ADDITIONAL_ARTICLES');
if ($arResult['ADDITIONAL']['ARTICLES']['SHOW'] && empty($arAdditionalArticles))
$arResult['ADDITIONAL']['ARTICLES']['SHOW'] = false;
if (!empty($arAdditionalArticles))
$arResult['ADDITIONAL']['ARTICLES']['VALUE'] = $arAdditionalArticles;
unset($arAdditionalArticles);
$arResult['PARAMETERS'] = [
'COMMON' => [
'FORM_ID',
'FORM_TEMPLATE',
'FORM_PROPERTY_PRODUCT',
'PROPERTY_MARKS_RECOMMEND',
'PROPERTY_MARKS_NEW',
'PROPERTY_MARKS_HIT',
'PROPERTY_ORDER_USE',
'CONSENT_URL',
'LAZY_LOAD',
'VOTE_MODE',
'DELAY_USE',
'QUANTITY_MODE',
'QUANTITY_BOUNDS_FEW',
'QUANTITY_BOUNDS_MANY',
'VIDEO_IBLOCK_TYPE',
'VIDEO_IBLOCK_ID',
'VIDEO_PROPERTY_URL',
'SERVICES_IBLOCK_TYPE',
'SERVICES_IBLOCK_ID',
'REVIEWS_IBLOCK_TYPE',
'REVIEWS_IBLOCK_ID',
'REVIEWS_PROPERTY_ELEMENT_ID',
'REVIEWS_USE_CAPTCHA',
'PROPERTY_ARTICLE',
'PROPERTY_BRAND',
'PROPERTY_PICTURES',
'PROPERTY_SERVICES',
'PROPERTY_DOCUMENTS',
'PROPERTY_ADDITIONAL',
'PROPERTY_ASSOCIATED',
'PROPERTY_RECOMMENDED',
'PROPERTY_VIDEO',
'OFFERS_PROPERTY_ARTICLE',
'OFFERS_PROPERTY_PICTURES',
'CONVERT_CURRENCY',
'CURRENCY_ID',
'PRICE_CODE'
]
];
if ($arParams['SEF_TABS_USE'] !== 'Y') {
unset($arResult['URL_TEMPLATES']['tabs']);
unset($arResult['VARIABLES']['TAB']);
}
if ($arParams['SEF_MODE'] === 'N') {
if ($arParams['SEF_TABS_USE'] === 'Y') {
$arResult['URL_TEMPLATES']['tabs'] = Html::encode($APPLICATION->GetCurPage()).'?'.
$arResult['ALIASES']['SECTION_ID'].'=#SECTION_ID#&'.
$arResult['ALIASES']['ELEMENT_ID'].'=#ELEMENT_ID#&'.
$arResult['ALIASES']['TAB'].'=#TAB#';
}
}
if ($arResult['PRODUCTS']['INTEREST']['PROPERTY']['USE']) {
$property_name = CIBlockPropertyEnum::GetList(Array(), Array(
"IBLOCK_ID" => $arParams['IBLOCK_ID'],
"CODE" => $arResult['PRODUCTS']['INTEREST']['PROPERTY']['VALUE'],
"EXTERNAL_ID" => $arResult['PRODUCTS']['INTEREST']['CATEGORIES']));
$arResult['PRODUCTS']['INTEREST']['PROPERTY']['NAME'] = $property_name->GetNext()['VALUE'];
unset($property_name);
}
parametrs.php
В данном файле в самом начале необходимо добавить строчки
use intec\core\bitrix\Component;
use intec\core\collections\Arrays;
use intec\core\helpers\Type;
use intec\core\helpers\StringHelper;
use intec\core\helpers\ArrayHelper;
use Bitrix\Main\Localization\Loc;
Затем после подключения модуля iblock нужно вставить код
$arParametersCommon = [
'FORM_ID',
'FORM_TEMPLATE',
'FORM_PROPERTY_PRODUCT',
'PROPERTY_MARKS_RECOMMEND',
'PROPERTY_MARKS_NEW',
'PROPERTY_MARKS_HIT',
'PROPERTY_ORDER_USE',
'CONSENT_URL',
'LAZY_LOAD',
'VOTE_MODE',
'DELAY_USE',
'QUANTITY_MODE',
'QUANTITY_BOUNDS_FEW',
'QUANTITY_BOUNDS_MANY',
'SERVICES_IBLOCK_TYPE',
'SERVICES_IBLOCK_ID',
'REVIEWS_IBLOCK_TYPE',
'REVIEWS_IBLOCK_ID',
'REVIEWS_PROPERTY_ELEMENT_ID',
'REVIEWS_USE_CAPTCHA',
'PROPERTY_ARTICLE',
'PROPERTY_BRAND',
'PROPERTY_PICTURES',
'PROPERTY_SERVICES',
'PROPERTY_DOCUMENTS',
'PROPERTY_ADDITIONAL',
'PROPERTY_ASSOCIATED',
'PROPERTY_RECOMMENDED',
'PROPERTY_VIDEO',
'OFFERS_PROPERTY_ARTICLE',
'OFFERS_PROPERTY_PICTURES',
'CONVERT_CURRENCY',
'CURRENCY_ID',
'PRICE_CODE'
];
После этого в конце файла добавьте следующий кусок кода
$sComponent = 'bitrix:catalog.section.list';
$sTemplate = 'catalog.';
$arTemplates = Arrays::from(CComponentUtil::GetTemplatesList(
$sComponent,
$siteTemplate
))->asArray(function ($iIndex, $arTemplate) use (&$sTemplate) {
if (!StringHelper::startsWith($arTemplate['NAME'], $sTemplate))
return ['skip' => true];
$sName = StringHelper::cut(
$arTemplate['NAME'],
StringHelper::length($sTemplate)
);
return [
'key' => $sName,
'value' => $sName
];
});
foreach (['ROOT', 'CHILDREN'] as $sLevel) {
$sPrefix = 'SECTIONS_'.$sLevel.'_';
$sTemplate = ArrayHelper::getValue($arCurrentValues, $sPrefix.'TEMPLATE');
$sTemplate = ArrayHelper::fromRange($arTemplates, $sTemplate, false, false);
if (!empty($sTemplate))
$sTemplate = 'catalog.'.$sTemplate;
if (!empty($sTemplate)) {
$arTemplateParameters = ArrayHelper::merge($arTemplateParameters, Component::getParameters(
$sComponent,
$sTemplate,
$siteTemplate,
$arCurrentValues,
$sPrefix,
function ($sKey, &$arParameter) use (&$sLevel, &$arParametersCommon) {
if (ArrayHelper::isIn($sKey, $arParametersCommon))
return false;
$arParameter['PARENT'] = 'SECTIONS_SETTINGS';
$arParameter['NAME'] = Loc::getMessage('C_CATALOG_CATALOG_1_SECTIONS_'.$sLevel).'. '.$arParameter['NAME'];
return true;
},
Component::PARAMETERS_MODE_TEMPLATE
));
}
if ($sLevel === 'CHILDREN') {
$sExtendingPrefix = $sPrefix.'EXTENDING_';
$sExtendingComponent = 'bitrix:catalog.section';
$sExtendingTemplate = 'products.small.';
$arExtendingTemplates = Arrays::from(CComponentUtil::GetTemplatesList(
$sExtendingComponent,
$siteTemplate
))->asArray(function ($iIndex, $arTemplate) use (&$sExtendingTemplate) {
if (!StringHelper::startsWith($arTemplate['NAME'], $sExtendingTemplate))
return ['skip' => true];
$sName = StringHelper::cut(
$arTemplate['NAME'],
StringHelper::length($sExtendingTemplate)
);
return [
'key' => $sName,
'value' => $sName
];
});
$sExtendingTemplate = ArrayHelper::getValue($arCurrentValues, $sExtendingPrefix.'TEMPLATE');
$sExtendingTemplate = ArrayHelper::fromRange($arExtendingTemplates, $sExtendingTemplate, false, false);
if (!empty($sExtendingTemplate))
$sExtendingTemplate = 'products.small.'.$sExtendingTemplate;
$arTemplateParameters[$sExtendingPrefix.'USE'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'USE'),
'TYPE' => 'CHECKBOX'
];
$arTemplateParameters[$sExtendingPrefix.'COUNT'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'COUNT'),
'TYPE' => 'STRING',
'DEFAULT' => 30
];
$arFields = [];
if (!empty($arCurrentValues['IBLOCK_ID'])) {
$rsFields = CUserTypeEntity::GetList(['SORT' => 'ASC'], array(
'ENTITY_ID' => 'IBLOCK_'.$arCurrentValues['IBLOCK_ID'].'_SECTION',
'USER_TYPE_ID' => 'iblock_section',
'MULTIPLE' => 'Y'
));
while ($arField = $rsFields->Fetch())
$arFields[$arField['FIELD_NAME']] = $arField['FIELD_NAME'];
unset($rsFields);
}
$arTemplateParameters[$sExtendingPrefix.'PROPERTY'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'PROPERTY'),
'TYPE' => 'LIST',
'VALUES' => $arFields,
'ADDITIONAL_VALUES' => 'Y'
];
unset($arFields);
$arTemplateParameters[$sExtendingPrefix.'TITLE'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'TITLE'),
'TYPE' => 'STRING',
'DEFAULT' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'TITLE_DEFAULT')
];
$arTemplateParameters[$sExtendingPrefix.'TEMPLATE'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sExtendingPrefix.'TEMPLATE'),
'TYPE' => 'LIST',
'VALUES' => $arExtendingTemplates,
'ADDITIONAL_VALUES' => 'Y',
'REFRESH' => 'Y'
];
if (!empty($sExtendingTemplate)) {
$arTemplateParameters = ArrayHelper::merge($arTemplateParameters, Component::getParameters(
$sExtendingComponent,
$sExtendingTemplate,
$siteTemplate,
$arCurrentValues,
$sExtendingPrefix,
function ($sKey, &$arParameter) use (&$sLevel, &$arParametersCommon) {
if (ArrayHelper::isIn($sKey, $arParametersCommon))
return false;
$arParameter['PARENT'] = 'SECTIONS_SETTINGS';
$arParameter['NAME'] = Loc::getMessage('C_CATALOG_CATALOG_1_SECTIONS_'.$sLevel).'. '.Loc::getMessage('C_CATALOG_CATALOG_1_SECTIONS_'.$sLevel.'_EXTENDING').'. '.$arParameter['NAME'];
return true;
},
Component::PARAMETERS_MODE_TEMPLATE
));
}
$sArticlesExtendingPrefix = 'SECTIONS_ARTICLES_EXTENDING_';
$sArticlesExtendingComponent = 'bitrix:news.list';
$sArticlesExtendingTemplate = 'news.';
$arArticlesExtendingTemplates = Arrays::from(CComponentUtil::GetTemplatesList(
$sArticlesExtendingComponent,
$siteTemplate
))->asArray(function ($iIndex, $arTemplate) use (&$sArticlesExtendingTemplate) {
if (!StringHelper::startsWith($arTemplate['NAME'], $sArticlesExtendingTemplate))
return ['skip' => true];
$sName = StringHelper::cut(
$arTemplate['NAME'],
StringHelper::length($sArticlesExtendingTemplate)
);
return [
'key' => $sName,
'value' => $sName
];
});
$sArticlesExtendingTemplate = ArrayHelper::getValue($arCurrentValues, $sArticlesExtendingPrefix.'TEMPLATE');
$sArticlesExtendingTemplate = ArrayHelper::fromRange($arArticlesExtendingTemplates, $sArticlesExtendingTemplate, false, false);
if (!empty($sArticlesExtendingTemplate))
$sArticlesExtendingTemplate = 'news.'.$sArticlesExtendingTemplate;
$arTemplateParameters[$sArticlesExtendingPrefix.'TITLE'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sArticlesExtendingPrefix.'TITLE'),
'TYPE' => 'STRING',
'DEFAULT' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sArticlesExtendingPrefix.'TITLE_DEFAULT')
];
$arTemplateParameters[$sArticlesExtendingPrefix.'QUANTITY'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sArticlesExtendingPrefix.'QUANTITY'),
'TYPE' => 'STRING',
'DEFAULT' => 5
];
$arTemplateParameters[$sArticlesExtendingPrefix.'TEMPLATE'] = [
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_'.$sArticlesExtendingPrefix.'TEMPLATE'),
'TYPE' => 'LIST',
'VALUES' => $arArticlesExtendingTemplates,
'ADDITIONAL_VALUES' => 'Y',
'REFRESH' => 'Y'
];
if (!empty($sExtendingTemplate)) {
$arTemplateParameters = ArrayHelper::merge($arTemplateParameters, Component::getParameters(
$sArticlesExtendingComponent,
$sArticlesExtendingTemplate,
$siteTemplate,
$arCurrentValues,
$sArticlesExtendingPrefix,
function ($sKey, &$arParameter) use (&$arParametersCommon) {
if (ArrayHelper::isIn($sKey, $arParametersCommon))
return false;
$arParameter['PARENT'] = 'SECTIONS_SETTINGS';
$arParameter['NAME'] = Loc::getMessage('C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING').'. '.$arParameter['NAME'];
return true;
},
Component::PARAMETERS_MODE_TEMPLATE
));
}
}
}
if (!empty($arCurrentValues['IBLOCK_ID'])) {
$arTemplateParameters['INTEREST_PRODUCTS_SHOW'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_SHOW'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'REFRESH' => 'Y'
];
if ($arCurrentValues['INTEREST_PRODUCTS_SHOW'] === 'Y') {
$arSectionsList = CIBlockSection::GetTreeList([
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
"ACTIVE" => "Y"
], [
"ID",
"NAME",
"CODE"
]);
$arSections [0] = Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_ALL');
$arSections [1] = Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_DEFAULT');
while($elements = $arSectionsList->GetNextElement()) {
$element = $elements->GetFields();
$arSections [$element['ID']] = '['.$element['CODE'].'] '.$element['NAME'];
}
$arTemplateParameters['INTEREST_PRODUCTS_TITLE'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCT_TITLE'),
'TYPE' => 'STRING',
'DEFAULT' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCT_NAME_DEFAULT')
];
$arTemplateParameters['INTEREST_PRODUCTS_COUNT'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_COUNT'),
'TYPE' => 'STRING',
'DEFAULT' => 25
];
$arTemplateParameters['INTEREST_PRODUCTS_POSITION'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION'),
'TYPE' => 'LIST',
'VALUES' => [
'content' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION_CONTENT'),
'footer' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION_BOTTOM')
]
];
$arTemplateParameters['INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N',
'REFRESH' => 'Y'
];
if ($arCurrentValues['INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'] === 'Y') {
$arTemplateParameters['INTEREST_PRODUCTS_CATEGORIES_PROPERTY'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY'),
'TYPE' => 'LIST',
'VALUES' => $arProperties->asArray(function ($iIndex, $arProperty) {
if (empty($arProperty['CODE']))
return ['skip' => true];
if ($arProperty['PROPERTY_TYPE'] !== 'L' || $arProperty['LIST_TYPE'] !== 'L' || $arProperty['MULTIPLE'] === 'Y')
return ['skip' => true];
return [
'key' => $arProperty['CODE'],
'value' => '['.$arProperty['CODE'].'] '.$arProperty['NAME']
];
}),
'DEFAULT' => 'CATEGORY',
'REFRESH' => 'Y',
'ADDITIONAL_VALUES' => 'Y'
];
if (!empty($arCurrentValues['INTEREST_PRODUCTS_CATEGORIES_PROPERTY'])) {
$arProperty = CIBlockProperty::GetList([], [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'CODE' => $arCurrentValues['INTEREST_PRODUCTS_CATEGORIES_PROPERTY']
])->GetNext();
if (!empty($arProperty)) {
$rsCategories = CIBlockPropertyEnum::GetList(['SORT' => 'ASC'], [
'PROPERTY_ID' => $arProperty['ID']
]);
while ($arCategory = $rsCategories->GetNext())
if (!empty($arCategory['XML_ID']))
$arCategories[$arCategory['XML_ID']] = '['.$arCategory['XML_ID'].'] '.$arCategory['VALUE'];
}
}
$arTemplateParameters['INTEREST_PRODUCTS_CATEGORIES'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES'),
'TYPE' => 'LIST',
'VALUES' => $arCategories,
'DEFAULT' => null,
'ADDITIONAL_VALUES' => 'Y'
];
} else {
$arTemplateParameters['INTEREST_PRODUCTS_CATEGORIES'] = [
'PARENT' => 'LIST_SETTINGS',
'NAME' => Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES'),
'TYPE' => 'LIST',
'VALUES' => $arSections,
'DEFAULT' => 0
];
}
$sComponent = 'bitrix:catalog.section';
$sTemplate = 'products.small.6';
$sPrefix = 'INTEREST_PRODUCTS_';
$arTemplates = Arrays::from(CComponentUtil::GetTemplatesList(
$sComponent,
$siteTemplate
))->asArray(function ($key, $arTemplate) {
return [
'key' => $key,
'value' => $arTemplate['NAME']
];
});
if (ArrayHelper::isIn($sTemplate, $arTemplates)) {
$arRecommendedCommonParameters = [
'SETTINGS_USE',
'LAZYLOAD_USE'
];
$arTemplateParameters = ArrayHelper::merge($arTemplateParameters, Component::getParameters(
$sComponent,
$sTemplate,
$siteTemplate,
$arCurrentValues,
$sPrefix,
function ($key, &$arParameter) use (&$arRecommendedCommonParameters) {
if (ArrayHelper::isIn($key, $arRecommendedCommonParameters))
return false;
$arParameter['NAME'] = Loc::getMessage('C_CATALOG_CATALOG_1_INTEREST_PRODUCT').' '.$arParameter['NAME'];
$arParameter['PARENT'] = 'LIST_SETTINGS';
return true;
},
Component::PARAMETERS_MODE_TEMPLATE
));
unset($arRecommendedCommonParameters);
}
unset($sTemplate, $sComponent, $sPrefix, $arTemplates);
}
}
Также необходимо добавить код в lang файл
Рабочий стол->Контент->Структура сайта->Файлы и папки->bitrix->templates->Название_вашего_шаблона->components->bitrix->catalog->Название_вашего_шаблона->lang->ru->.parameters.php
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCT'] = 'Вас могут заинтересовать. ';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_SHOW'] = 'Отображать блок "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'] = 'Использовать свойство "Категория" для вывода в блок "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY'] = 'Свойство для вывода в блок "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCT_TITLE'] = 'Заголовок блока "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCT_NAME_DEFAULT'] = 'Вас могут заинтересовать';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION'] = 'Позиция блока "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION_CONTENT'] = 'В блоке контента';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_POSITION_BOTTOM'] = 'Внизу страницы ';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES'] = 'Категория "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_ALL'] = 'Все';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_DEFAULT'] = 'По умолчанию';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_COUNT'] = 'Количество элементов в блоке "Вас могут заинтересовать" (минимум 1)';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_TITLE'] = 'Заголовок статей расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_TITLE_DEFAULT'] = 'Полезные статьи';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT'] = 'Корневые разделы';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_SECTION_DESCRIPTION_SHOW'] = 'Отображать описание в корне';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_SECTION_DESCRIPTION_POSITION'] = 'Позиция описания в корне';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_SECTION_DESCRIPTION_POSITION_TOP'] = 'Сверху';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_SECTION_DESCRIPTION_POSITION_BOTTOM'] = 'Снизу';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_CANONICAL_URL_USE'] = 'Использовать канонический адрес в корне';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_CANONICAL_URL_TEMPLATE'] = 'Шаблон канонического адреса в корне';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_TEMPLATE'] = 'Шаблон корневых разделов';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ROOT_MENU_SHOW'] = 'Отображать меню в корневых разделах';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN'] = 'Вложенные разделы';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_SECTION_DESCRIPTION_SHOW'] = 'Отображать описание в разделах';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_SECTION_DESCRIPTION_POSITION'] = 'Позиция описания в разделах';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_SECTION_DESCRIPTION_POSITION_TOP'] = 'Сверху';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_SECTION_DESCRIPTION_POSITION_BOTTOM'] = 'Снизу';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_CANONICAL_URL_USE'] = 'Использовать канонический адрес вложенных разделов';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_CANONICAL_URL_TEMPLATE'] = 'Шаблон канонического адреса вложенных разделов';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_TEMPLATE'] = 'Шаблон вложенных разделов';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_MENU_SHOW'] = 'Отображать меню во вложенных разделах';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING'] = 'Расширение товаров';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_USE'] = 'Использовать расширение товаров за счет родительских разделов';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_COUNT'] = 'Максимальное количество товаров расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_PROPERTY'] = 'Свойство с разделами, откуда берутся товары расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_TITLE'] = 'Заголовок товаров расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_TITLE_DEFAULT'] = 'Смотрите также';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_TEMPLATE'] = 'Шаблон товаров расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_ARTICLES_EXTENDING'] = 'Выводить статьи для расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_QUANTITY'] = 'Количество выводимых статей для расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING'] = 'Выводить статьи для расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_COUNT'] = 'Максимальное количество статей расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_TITLE'] = 'Заголовок статей расширения';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_TITLE_DEFAULT'] = 'Полезные статьи';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_ARTICLES_EXTENDING_TEMPLATE'] = 'Шаблон статей расширения';
$MESS['C_CATALOG_CATALOG_1_TAGS_COUNT'] = 'Теги. Подсчитывать количество элементов для каждого тэга';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_COUNT'] = 'Количество элементов в блоке "Вас могут заинтересовать" (минимум 1)';
$MESS['C_CATALOG_CATALOG_1_TAGS_PROPERTY'] = 'Теги. Свойство "Тэги"';
$MESS['C_CATALOG_CATALOG_1_SECTIONS_CHILDREN_EXTENDING_PROPERTY'] = 'Свойство с разделами, откуда берутся товары расширения';
$MESS['C_CATALOG_CATALOG_1_PROPERTY_ADDITIONAL_ARTICLES'] = 'Свойство "Статьи раздела"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY_USE'] = 'Использовать свойство "Категория" для вывода в блок "Вас могут заинтересовать"';
$MESS['C_CATALOG_CATALOG_1_INTEREST_PRODUCTS_CATEGORIES_PROPERTY'] = 'Свойство для вывода в блок "Вас могут заинтересовать"';