Меню
Как вывести список товаров в последних разделах каталога, если в bitrix:catalog в файле section.php ничего не менял
Код
<?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"]));
$isSidebarLeft = isset($arParams['SIDEBAR_SECTION_POSITION']) && $arParams['SIDEBAR_SECTION_POSITION'] === 'left';
$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 ($isVerticalFilter)
{
    include($_SERVER["DOCUMENT_ROOT"] . "/" . $this->GetFolder() . "/section_vertical.php");
}
else
{
    include($_SERVER["DOCUMENT_ROOT"] . "/" . $this->GetFolder() . "/section_horizontal.php");
}
Можно в файлах
/section_vertical.php и /section_horizontal.php
Обвернуть вывод catalog.section в условие
Код
$arResult['SECTION_ID'] = CIBlockFindTools::GetSectionID(
   $arResult['VARIABLES']['SECTION_ID'], 
   $arResult['VARIABLES']['SECTION_CODE'], 
   array('IBLOCK_ID' => $arParams['IBLOCK_ID'])
);
$arFilter = array(
    'IBLOCK_ID' => $arParams["IBLOCK_ID"],
    'GLOBAL_ACTIVE' => 'Y',
    'SECTION_ID' => $arResult['SECTION_ID']);
$db_list = CIBlockSection::GetList(
    array($by => $order),
    $arFilter,
    true
);
while($ar_result = $db_list->GetNext())
{
    $isHaveSections = $ar_result['ID'];
break;
}
if (!isset($isHaveSections)) { 
   // ТУТ catalog.section
}
Спасибо большое за помощь!
Видеоуроки по
1С-Битрикс
на моем Boosty канале Видео
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Блог-note: заметки разработчика

Показ страницы сайта в боковом слайдере, на примере всплывающей формы обратной связи.

Если вы хотите сделать подгрузку любой страницы сайта в боковой слайдер, для этого в битриксе есть метод BX.SidePanel.In...

Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона

Задача: Мобильное приложение, созданное на Apache Cordova должно перезагрузить текущую страницу, открытую с помощью плаг...

Вывод элементов с помощью API битрикс

Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Например, если нужно вывести элем...

Бонус за выполненный заказ на внутренний счет пользователя

Задача: после того как заказ, в интернет-магазине, перешел в статус "Выполнен" начислить пользователю 5% от стоимости за...

Заполнить коэффициент единицы измерения (MEASURE_RATIO) из свойства элемента

Задача: Каталог наполняется из 1С, но 1С не передает коэффициент единицы измерения (особенность конкретной 1С, но во...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Обновление 1С-Битрикс с PHP 7, до поддержки версии PHP 8.3

Задача: обновить устаревший сайт на платформе 1С-Битрикс, который не получал обновлений уже более 4 лет и работает на PH...

Заполнить инфоблок брендов из свойства инфоблока с товарами

Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производите...

Фотогалерея на базе компонента новостей, с fancybox.

Это заметка обновление к очень старой, уже имеющейся на сайте. Сделаем что-то типа фотогалереи на базе встроеннного в би...