Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Фильтр в каталоге

00 голосов
6
Никак не разберусь, как добавить поле для фильтрации по авторам в фильтре в разделе каталога. И каким образом редактировать поля в фильтре, мне нужно поле <SELECT>, а не <INPUT type="text"> как установлено по умолчанию. И как получить массив списка авторов, чтобы его элементы отображались в выпадающем списке <SELECT>. Ведь эта задача может часто встречаться на практике, почему нет её очевидного решения на Битриксе, не ясно мне. Заранее всем спасибо, жду ответов, догадок, подсказок ...
спросил 09 Март, 13 от PPL46 (200 баллов)

6 Ответы

00 голосов
Фильтр в разделе каталога работает для свойств инфоблока, в котором расположен раздел. Т.е. если раздел в инфоблоке "Каталог", создаём там свойство "автор", выбираем ему там же тип (например, список, т.е. select, ну и т.д., разобраться можно) Дальше в настройках компонента (например, комплексный bitrix:catalog), где выводится раздел инфоблока нужно подключить фильтр и указать, по каким полям фильтровать. Если я, конечно, правильно понял, что хотели)
ответил 09 Март, 13 от AsteRon (180 баллов)
00 голосов
Спасибо за быстрый ответ!
А где мне указать, что свойтсво "Автор", которое я добавил, должно быть привязано к списку авторов?
ответил 17 Март, 13 от PPL46 (200 баллов)
00 голосов
Т.е. как мне сделать, чтобы в этом списке отображались авторы, чтобы их можно было выбирать из этого списка, а не набирать вручную??
ответил 22 Апр, 13 от PPL46 (200 баллов)
00 голосов
Зайдите в свойства инфоблока, справа от мнемонического кода будет кнопка (в столбце "Изм"), которую нажмёте и попадёте в расширенную настройку свойства "Свойство детально" Если был выбран тип "список", то можно будет прописать нужных авторов (в колонке "Значения"), потом при добавлении элементов надо будет выбирать автора из списка.
ответил 17 Авг, 13 от AsteRon (180 баллов)
00 голосов
вопрос актуален. при чем тут "прописать нужных авторов"? спрашивали про автоматическую привязку значений свойства к списку.
ответил 16 Ноя, 13 от Exumer (360 баллов)
00 голосов
В шаблон формы фильтра в нужное место вставляем вызов компонента "список новостей".
Список новостей настраиваем на выдачу авторов.
Шаблон списка новостей (у меня - select_vendor - z делал фильтр по производителям) выглядит примерно так:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?foreach($arResult["ITEMS"] as $arItem):?>
<option value="<?=$arItem["ID"]?>"><?=$arItem["NAME"]?></option>
<?endforeach;?>


Шаблон фильтра - так:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<form name="<?echo $arResult["FILTER_NAME"]."_form"?>" action="<?echo $arResult["FORM_ACTION"]?>" method="get" id="brand">
   <?foreach($arResult["ITEMS"] as $arItem):
      if(array_key_exists("HIDDEN", $arItem)):
         echo $arItem["INPUT"];
      endif;
   endforeach;?>
<select name="arrFilter_pf[VENDOR]">
<?$APPLICATION->IncludeComponent("bitrix:news.list", "select_vendor", Array(
   "IBLOCK_TYPE" => "equipment",   // Тип информационного блока (используется только для проверки)
   "IBLOCK_ID" => "17",   // Код информационного блока
   "NEWS_COUNT" => "100",   // Количество новостей на странице
   "SORT_BY1" => "NAME",   // Поле для первой сортировки новостей
   "SORT_ORDER1" => "DESC",   // Направление для первой сортировки новостей
   "SORT_BY2" => "SORT",   // Поле для второй сортировки новостей
   "SORT_ORDER2" => "ASC",   // Направление для второй сортировки новостей
   "FILTER_NAME" => "",   // Фильтр
   "FIELD_CODE" => array(   // Поля
      0 => "ID",
      1 => "NAME",
      2 => "",
   ),
   "PROPERTY_CODE" => array(   // Свойства
      0 => "",
      1 => "",
   ),
   "CHECK_DATES" => "Y",   // Показывать только активные на данный момент элементы
   "DETAIL_URL" => "",   // URL страницы детального просмотра (по умолчанию - из настроек инфоблока)
   "AJAX_MODE" => "N",   // Включить режим AJAX
   "AJAX_OPTION_SHADOW" => "N",   // Включить затенение
   "AJAX_OPTION_JUMP" => "N",   // Включить прокрутку к началу компонента
   "AJAX_OPTION_STYLE" => "N",   // Включить подгрузку стилей
   "AJAX_OPTION_HISTORY" => "N",   // Включить эмуляцию навигации браузера
   "CACHE_TYPE" => "A",   // Тип кеширования
   "CACHE_TIME" => "3600",   // Время кеширования (сек.)
   "CACHE_FILTER" => "N",   // Кэшировать при установленном фильтре
   "PREVIEW_TRUNCATE_LEN" => "",   // Максимальная длина анонса для вывода (только для типа текст)
   "ACTIVE_DATE_FORMAT" => "d.m.Y",   // Формат показа даты
   "DISPLAY_PANEL" => "N",   // Добавлять в админ. панель кнопки для данного компонента
   "SET_TITLE" => "N",   // Устанавливать заголовок страницы
   "SET_STATUS_404" => "N",   // Устанавливать статус 404, если не найдены элемент или раздел
   "INCLUDE_IBLOCK_INTO_CHAIN" => "N",   // Включать инфоблок в цепочку навигации
   "ADD_SECTIONS_CHAIN" => "N",   // Включать раздел в цепочку навигации
   "HIDE_LINK_WHEN_NO_DETAIL" => "N",   // Скрывать ссылку, если нет детального описания
   "PARENT_SECTION" => "",   // ID раздела
   "PARENT_SECTION_CODE" => "",   // Код раздела
   "DISPLAY_TOP_PAGER" => "N",   // Выводить над списком
   "DISPLAY_BOTTOM_PAGER" => "N",   // Выводить под списком
   "PAGER_TITLE" => "Новости",   // Название категорий
   "PAGER_SHOW_ALWAYS" => "N",   // Выводить всегда
   "PAGER_TEMPLATE" => "",   // Название шаблона
   "PAGER_DESC_NUMBERING" => "N",   // Использовать обратную навигацию
   "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",   // Время кеширования страниц для обратной навигации
   "PAGER_SHOW_ALL" => "N",   // Показывать ссылку "Все"
   "DISPLAY_DATE" => "N",   // Выводить дату элемента
   "DISPLAY_NAME" => "Y",   // Выводить название элемента
   "DISPLAY_PICTURE" => "N",   // Выводить изображение для анонса
   "DISPLAY_PREVIEW_TEXT" => "N",   // Выводить текст анонса
   "AJAX_OPTION_ADDITIONAL" => "",   // Дополнительный идентификатор
   ),
   false
);?>
</select>

<input type="submit" name="set_filter" value="<?=GetMessage("IBLOCK_SET_FILTER")?>" /><input type="hidden" name="set_filter" value="Y" />  <input type="submit" name="del_filter" value="<?=GetMessage("IBLOCK_DEL_FILTER")?>" /></td>

</form>
ответил 25 Фев, 14 от 3aCoC (100 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 15 Сен, 13 от LoLiTKa (620 баллов)
+1 голос
1 ответ
спросил 02 Март, 17 от devenge (320 баллов)
0 голосов
1 ответ
спросил 17 Янв, 17 от loony (540 баллов)
0 голосов
1 ответ
0 голосов
1 ответ