Для получения и вывода активных пунктов умного фильтра в отдельном месте на сайте на платформе 1C-Bitrix, вам потребуется использовать некоторые функции и методы API фреймворка.
1. Первым шагом является подключение API компонента "Умный фильтр" в вашем файле шаблона страницы (например, header.php) с помощью следующей строки кода:
<?php if (CModule::IncludeModule('catalog')) { $APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", "", Array(...)); } ?>
2. Далее, вам необходимо создать или отредактировать файл компонента "Умный фильтр" (например, /bitrix/components/bitrix/catalog.smart.filter/component.php) и добавить следующий код:
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $filterSettings = &$arResult["SECTIONS"]; // Получаем массив настроек фильтра из компонента $activeSections = array(); // Создаем пустой массив для активных разделов foreach ($filterSettings as $section) { // Проходимся по всем разделам фильтра foreach ($section["VALUES"] as $value) { // Проходимся по всем пунктам раздела if ($value["DISABLED"]) { // Проверяем, включен ли пункт фильтра continue; // Если пункт выключен, пропускаем его } if ($value["CHECKED"]) { // Проверяем, выбран ли пункт фильтра $activeSections[] = $value; // Если пункт выбран, добавляем его в массив активных разделов } } } // Выводим активные пункты фильтра в отдельном месте на сайте foreach ($activeSections as $section) { echo $section["CONTROL_NAME"] . ": " . $section["VALUE"] . "<br>"; } ?>
3. После этого, вы можете вставить компонент "Умный фильтр" в нужное место на вашей странице (например, в sidebar.php) с помощью следующей строки кода:
<?php if (CModule::IncludeModule('catalog')) { $APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", "", Array(...)); } ?>
4. Наконец, вы можете вставить вывод активных пунктов фильтра в нужное место с помощью следующего кода (например, в sidebar.php):
<?php if (CModule::IncludeModule('catalog')) { $APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", "", Array(...)); } ?> <!-- Вывод активных пунктов умного фильтра --> <div> <h3>Активные пункты фильтра:</h3> <?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $filterSettings = &$arResult["SECTIONS"]; // Получаем массив настроек фильтра из компонента $activeSections = array(); // Создаем пустой массив для активных разделов foreach ($filterSettings as $section) { // Проходимся по всем разделам фильтра foreach ($section["VALUES"] as $value) { // Проходимся по всем пунктам раздела if ($value["DISABLED"]) { // Проверяем, включен ли пункт фильтра continue; // Если пункт выключен, пропускаем его } if ($value["CHECKED"]) { // Проверяем, выбран ли пункт фильтра $activeSections[] = $value; // Если пункт выбран, добавляем его в массив активных разделов } } } // Выводим активные пункты фильтра foreach ($activeSections as $section) { echo $section["CONTROL_NAME"] . ": " . $section["VALUE"] . "<br>"; } ?> </div>
После выполнения этих шагов, активные пункты умного фильтра будут выводиться в отдельном месте на вашем сайте.