Объяснить работу компонентов и шаблонов bitrix, $arParams,$arResult

1 000 руб. за проект
08 февраля 2021, 20:03 • 6 откликов • 33 просмотра
<? use Bitrix\Iblock\Component\Tools;


if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();


\Bitrix\Main\Loader::includeModule('iblock');


$arFilter = [
'IBLOCK_ID' => $arParams['IBLOCK_ID'],
'ACTIVE' => 'Y',
];


if ($arParams['SECTION_CODE']) {
$arFilter['CODE'] = $arParams['SECTION_CODE'];
} else {
$arFilter['ID'] = $arParams['SECTION_ID'];
}
$arResult['SECTION'] = IblockQuery::sections()
->filter($arFilter)
->sectionPageUrl($arParams['SECTION_URL'])
->execute()->first();


if (!$arResult['SECTION']) {
Tools::process404(
trim($arParams['MESSAGE_404']) ?: "Not found",
true,
'Y',
'Y',
""
);
}
$arResult['SECTIONS'] = [
$arResult['SECTION']
];
$parentId = $arResult['SECTION']['IBLOCK_SECTION_ID'];
while($parentId) {
$parent = IblockQuery::sections()
->filter(['ID' => $parentId])
->sectionPageUrl($arParams['SECTION_URL'])
->execute()->first();
$parentId = $parent['IBLOCK_SECTION_ID'];
$arResult['SECTIONS'][] = $parent;
}
$arResult['SECTIONS'] = array_reverse($arResult['SECTIONS']);
foreach ($arResult['SECTIONS'] as $parentSection) {
$APPLICATION->AddChainItem($parentSection['NAME'], $parentSection['SECTION_PAGE_URL']);
}




$arResult['SECTION_IDS'] = [
$arResult['SECTION']['ID'],
pre($arResult)
];


$arResult['ITEMS'] = IblockQuery::items()
->filter([
'IBLOCK_ID' => IblockService::getId('catalog'),
'ACTIVE' => 'Y',
'IBLOCK_SECTION_ID' => $arResult['SECTION_IDS'],
])
->select([
'ID',
'NAME',
'CODE',
'SORT',
'DEPTH_LEVEL',
'IBLOCK_SECTION_ID',
'DESCRIPTION'
])
->execute()->all();


$this->IncludeComponentTemplate();