20.июл.2024
Создаем news.list с фильтром по тегам на Ajax
-
Создаем свойство Теги тип Список: ATTR_TAG_FILTER, Внешний вид: Флажки, заполняем нужными фильтрами настройке инфоблока
-
Заходим в шаблон news.list: /news/template_blog/bitrix/catalog.filter/ШАБЛОН, и создаем файл result_modifier.php с кодом
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var array $arResult */
foreach ($arResult["ITEMS"] as $arItem) {
foreach ($arItem["LIST"] as $key => $labelTags) {
$name = array(
"ID" => $key,
"LABEL" => $labelTags,
"TYPE" => $arItem["TYPE"],
"INPUT_NAME" => $arItem["INPUT_NAME"]."[]"
);
$arResult["ITEMS"]["TAGS"][] = $name;
}
}
-
далее в шаблоне фильтра template.php после “$this->setFrameMode(true);” добавляем $request
-
к Input добавить onclick="clickFilter()"
//arFilterBlog это важно, требуется указать тот что указан в параметрах комопнента
$request = \Bitrix\Main\Context::getCurrent()->getRequest();
if($request["bxajaxid"]){
$idBtnFilter = $request["arFilterBlog_pf"]["ATTR_TAG_FILTER"];
}
-
добавляем в шаблон фильтра template.php скрипт, по нажатию на кнопку input нажимается скрытая кнопка “Фильтровать”
<script>
function clickFilter() {
// Находим элемент с id "btn_filter_tag"
const btnFilterTag = document.getElementById('btn_filter_tag');
if (btnFilterTag) {
// Триггерим событие click на элементе btnFilterTag
btnFilterTag.click();
} else {
console.warn('Элемент с id "btn_filter_tag" не найден.');
}
}
</script>
© LazarovStudio 2017 - 20252022>
Есть что-то, что не любит ограждений ©