Нужно было сделать так, чтобы каталог показывал на первой странице список всех товаров.
Было сделано так - список секций и ниже топ товаров.
Попробовал скопировал в шаблон sections.php компонент
Убрал топ из настроек.
Попробовал.
Не работает!
Ну ладно, не сильно и надеялся.
Очень долго ковырялся (два часа убил), облазил весь \bitrix\components\bitrix\catalog.section\component.php
Везде предполагается что SECTION_ID задан явно. Но мне-то нужно выводять содержимое всего инфоблока, со всеми секциями.
Оказалась все решается просто, но, как всегда в битриксе, через жопу.
Нашел такой код:
Волшебный комментарий подарил мне надежду.
Этот код и должен выдавать элементы:
Отточенным за время работы с битриксом движением включаем отладку.
И находим что в фильтре
Почесав затылок и ругнувшись нашел код (elseif в файле на строке номер 241)
и сопоставив его с кодом вначале файла
начал пробовать параметры компонента.
Короче, изобразив из себя компилятор я узнал, что если добавить в вызов компонента
то все прекрасно работает.
Что это за параметр и как его установить по человечески в настройках компонента, я не нашел. Все галочки включены.
Может быть это описано в курсах?
Мне не хватит терпения и времени. Мои чудесные результаты не позволяют мне претендовать на звание отличника по "теории битрикса".
Я осознаю что я, возможно, слишком, так сказать, предвзят, но этот параметр должен быть в настройках. А его там нет.
Это блядство.
Было сделано так - список секций и ниже топ товаров.
Попробовал скопировал в шаблон sections.php компонент
<?$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"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"], "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"], "FILTER_NAME" => $arParams["FILTER_NAME"], "DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "SET_TITLE" => $arParams["SET_TITLE"], "DISPLAY_COMPARE" => $arParams["USE_COMPARE"], "PAGE_ELEMENT_COUNT" => $arParams["PAGE_ELEMENT_COUNT"], "LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"], "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"], "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"], "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], "DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["element"], ), $component ); ?> |
Убрал топ из настроек.
Попробовал.
Не работает!
Ну ладно, не сильно и надеялся.
Очень долго ковырялся (два часа убил), облазил весь \bitrix\components\bitrix\catalog.section\component.php
Везде предполагается что SECTION_ID задан явно. Но мне-то нужно выводять содержимое всего инфоблока, со всеми секциями.
Оказалась все решается просто, но, как всегда в битриксе, через жопу.
Нашел такой код:
else { //Root section (no section filter) $arResult = array( "ID" => 0, "IBLOCK_ID" => $arParams["IBLOCK_ID"], ); $bSectionFound = true; } |
Волшебный комментарий подарил мне надежду.
Этот код и должен выдавать элементы:
//EXECUTE $rsElements = CIBlockElement::GetList($arSort, array_merge($arrFilter, $arFilter), false, $arNavParams, $arSelect); $rsElements->SetUrlTemplates($arParams["DETAIL_URL"]); $rsElements->SetSectionContext($arResult); $arResult["ITEMS"] = array(); while($obElement = $rsElements->GetNextElement()) { |
Отточенным за время работы с битриксом движением включаем отладку.
И находим что в фильтре
[SESSION_ID] => 0 |
Почесав затылок и ругнувшись нашел код (elseif в файле на строке номер 241)
if($arParams["BY_LINK"]!=="Y") { if($arResult["ID"]) $arFilter["SECTION_ID"] = $arResult["ID"]; elseif(!$arParams["SHOW_ALL_WO_SECTION"]) $arFilter["SECTION_ID"] = 0; } |
и сопоставив его с кодом вначале файла
$arParams["SHOW_ALL_WO_SECTION"] = $arParams["SHOW_ALL_WO_SECTION"]==="Y"; |
начал пробовать параметры компонента.
Короче, изобразив из себя компилятор я узнал, что если добавить в вызов компонента
"SHOW_ALL_WO_SECTION" => "Y", |
то все прекрасно работает.
Что это за параметр и как его установить по человечески в настройках компонента, я не нашел. Все галочки включены.
Может быть это описано в курсах?
Мне не хватит терпения и времени. Мои чудесные результаты не позволяют мне претендовать на звание отличника по "теории битрикса".
Я осознаю что я, возможно, слишком, так сказать, предвзят, но этот параметр должен быть в настройках. А его там нет.
Это блядство.