Компонент выводит результаты поиска по элементам каталога с указанным набором свойств, цен и т.д.. Компонент стандартный и входит в дистрибутив модуля.
В визуальном редакторе компонент расположен по пути Контент > Каталог > Поиск по каталогу.
Компонент относится к модулю Информационные блоки.
Содержание
Секции настроек компонента:
Описание параметров
| Поле | Параметр | Описание |
| Основные параметры | ||
|---|---|---|
| Тип инфо-блока | IBLOCK_TYPE | Указывается один из созданных в системе типов информационных блоков. |
| Инфо-блок | IBLOCK_ID | Для выбранного типа инфоблоков указывается идентификатор информационного блока, по элементам которого будет произведен поиск. |
| Источник данных | ||
| По какому полю сортируем элементы | ELEMENT_SORT_FIELD | Выбирается свойство элементов, по которому следует произвести сортировку:
|
| Порядок сортировки элементов | ELEMENT_SORT_ORDER | Указывается порядок сортировки элементов:
|
| Поле для второй сортировки элементов | ELEMENT_SORT_FIELD2 | Выбирается свойство элементов, по которому будет выполняться вторая сортировка:
|
| Порядок второй сортировки элементов | ELEMENT_SORT_ORDER2 | Указывается порядок второй сортировки элементов:
|
| Недоступные товары | HIDE_NOT_AVAILABLE | Как отображать недоступные товары:
Недоступны товары, для которых количество меньше либо равно нулю, включен количественный учет и не разрешена покупка при отсутствии товара. |
| Недоступные торговые предложения | HIDE_NOT_AVAILABLE_OFFERS | Указывается способ отображения недоступных для покупки торговых предложений:
|
| Не отображать товары, которых нет на складах | HIDE_NOT_AVAILABLE | [Y|N] При отмеченной опции будут скрыты товары, для которых общее доступное количество меньше либо равно нулю (не остатки по складам), включен количественный учет и не разрешена покупка при отсутствии товара. |
| Внешний вид | ||
| Количество элементов на странице | PAGE_ELEMENT_COUNT | Максимальное число показываемых на одной странице элементов. |
| Количество элементов выводимых в одной строке таблицы | LINE_ELEMENT_COUNT | Указывается число элементов, которые будут показаны в одной строке таблицы результатов поиска. |
| Свойства | PROPERTY_CODE | Указываются выводимые свойства товаров. |
| Поля предложений | OFFERS_FIELD_CODE | Выбираются поля предложений. Можно добавлять свои. С помощью клавиши Ctrl можно выбрать несколько значений. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| Свойства предложений | OFFERS_PROPERTY_CODE | Указываются свойства предложений. Можно добавлять свои. С помощью клавиши Ctrl можно выбрать несколько значений. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| По какому полю сортируем предложения товара | OFFERS_SORT_FIELD | Указывается поле, по которому сортируется весь список предложений товара. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| Порядок сортировки предложений товара | OFFERS_SORT_ORDER | Выбирается как сортировать предложения товара: по возрастанию, или по убыванию. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| Поле для второй сортировки предложений товара | OFFERS_SORT_FIELD2 | Указывается поле, по которому выполняется вторая сортировка списка предложений товара. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| Порядок второй сортировки предложений товара | OFFERS_SORT_ORDER2 | Выбирается порядок второй сортировки предложений товара: по возрастанию, или по убыванию. Данный параметр появляется при настройке компонента на инфоблок с поддержкой SKU. |
| Максимальное количество предложений для показа | OFFERS_LIMIT | Указывается максимально допустимое число показываемых торговых предложений (0 — все). |
| Шаблоны ссылок | ||
| URL, ведущий на страницу с содержимым раздела | SECTION_URL | Указывается адрес страницы содержимого раздела. |
| URL, ведущий на страницу с содержимым элемента раздела | DETAIL_URL | Указывается адрес страницы содержимого элемента раздела. |
| URL, ведущий на страницу с корзиной покупателя | BASKET_URL | Указывается адрес страницы корзины покупателя. |
| Название переменной, в которой передается действие | ACTION_VARIABLE | Указывается имя переменной, в которой передается действие. Значение параметра должно быть уникальным среди всех используемых компонентов на одной странице. |
| Название переменной, в которой передается код товара для покупки | PRODUCT_ID_VARIABLE | Указывается имя переменной, в которой передается код товара для покупки. |
| Название переменной, в которой передается количество товара | PRODUCT_QUANTITY_VARIABLE | Указывается имя переменной, в которой передается количество товара. |
| Название переменной, в которой передаются характеристики товара | PRODUCT_PROPS_VARIABLE | Указывается имя переменной, в которой передаются характеристики товара. |
| Название переменной, в которой передается код группы | SECTION_ID_VARIABLE | Указывается имя переменной, в которой передается код группы. |
| Управление режимом AJAX | ||
| Включить режим AJAX | AJAX_MODE | [Y|N] При установленной опции для компонента будет включен режим AJAX. |
| Включить прокрутку к началу компонента | AJAX_OPTION_JUMP | [Y|N] Если пользователь совершит AJAX-переход, то при установленной опции по окончании загрузки произойдет прокрутка к началу компонента. |
| Включить подгрузку стилей | AJAX_OPTION_STYLE | [Y|N] Если параметр принимает значение "Y", то при совершении AJAX-переходов будет происходить подгрузка и обработка списка стилей, вызванных компонентом. |
| Включить эмуляцию навигации браузера | AJAX_OPTION_HISTORY | [Y|N] Когда пользователь выполняет AJAX-переходы, то при включенной опции можно использовать кнопки браузера Назад и Вперед. |
| Настройки кеширования | ||
| Тип кеширования | CACHE_TYPE | Тип кеширования:
|
| Время кеширования (сек.) | CACHE_TIME | Время кеширования, указанное в секундах. |
| Дополнительные настройки | ||
| Выводить кнопку сравнения | DISPLAY_COMPARE | [Y|N] При отмеченной опции под каждым выводимым элементом будет ссылка Сравнить. |
| Цены | ||
| Тип цены | PRICE_CODE | Указывается тип цены для выводимых элементов. Если не задан ни один из типов, то цена товара и кнопки Купить и В корзину показаны не будут. |
| Использовать вывод цен с диапазонами | USE_PRICE_COUNT | [Y|N] При отмеченной опции будут отображаться цены всех типов на товары. |
| Выводить цены для количества | SHOW_PRICE_COUNT | Параметр определяет количество единиц товара, для которых выводить стоимость. |
| Включать НДС в цену | PRICE_VAT_INCLUDE | [Y|N] При отмеченной опции цены будут показаны с учетом НДС. |
| Характеристики товара | PRODUCT_PROPERTIES | Указываются характеристики товара. |
| Разрешить указание количества товара | USE_PRODUCT_QUANTITY | [Y|N] При установленной опции будет разрешено указание количества товара. |
| Показывать цены в одной валюте | CONVERT_CURRENCY | [Y|N] При установке флажка цены будут выводиться в одной валюте, даже если в каталоге они будут заданы в разных валютах, станет доступным дополнительное поле |
| Валюта, в которую будут сконвертированы цены | CURRENCY_ID | Выбор валюты в которой будут отображаться цены. Поле видно при отмеченной опции Показывать цены в одной валюте. |
. При выборе этой опции кеш компонента будет автоматически сбрасываться при изменении курсов валют тех товаров, которые показываются компонентом. К примеру, если выбрана конвертация в рубли, а цены в информационном блоке сохранены в евро, то кеш сбросится при изменении курса евро или рубля. Изменения остальных валют на кеш не окажут влияния.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Была задача сделать поиск на сайте только по товарам с выводом результатов с товарами в таком же дизайне как и в каталоге.
Приступаем к решению:
Для этого на сайте сделана форма поиска с кодом в шаблоне сайта:
Далее сделана странца /search/ без прямого на нее доступа. На ней был выведен инфоблок bitrix:catalog.section и перед ним была тоже организована строка поиска, для удобства. Доступ на эту страницу напрямую организован не был, т.к. на ней без запроса выводятся сразу все элементы кататалога (товары), а этого никто видеть не должен.
Далее на этой же странице до строки поиска и кода вывода каталога, вставляется фильтр для возможности передачи данных в него через строку поиска.
Поиск-фильтр этот может искать по словам, а так же по свойствам, например, по Серии. Серия товара организована как свойство с привязкой к элементам. Наш поиск, если видит, что в него попали поисковые слова, относящиеся к названию серии, то он выводит товары только для этой серии. В коде это видно по условию IF, если же слова не содержатся в Серии, он выдает товары с этим словом в содержании, названии и т.п., по чему осуществлялся поиск.
В этом поиске так же выолнен цикл для возможности выводить не только одну Серию, а несколько. Наример, мы искали Серию "Glass", а у нас есть еще серия "Super Glass", то благодаря цикул в коде нашего фильтра выведутся товары для обоих серий. Без этого цикла вывелись бы толькло товары одной Серии, которая была бы с меньшим значением ID.
Прошу прощения, за некоторую нелогичность и неграмотность кода, но умелые программисты поймут идею и не будут меня ругать :).
SetPageProperty("keywords", "Поиск продукции");
$APPLICATION->SetPageProperty("description", "Поиск продукции");
$APPLICATION->SetTitle("Поиск продукции");
//Начало фильтра для поиска
if ($_REQUEST["q"] != »)
<
CModule::IncludeModule("iblock");
$Serie= CIBlockElement::GetList(array(), array("ACTIVE"=>"Y", "%NAME"=>$_REQUEST[‘q’], "IBLOCK_ID"=>5), false, false, array("ID", "NAME"));
while($ar_fields = $Serie->GetNext()) //делаем цикл, иначе фильтр сработает только для первого найденного значения
<
$massiv[]=$ar_fields["ID"]; //выстраиваем цикл нащих значений
>
IF ($massiv > 0) //это уже условие для поиска, оно немного неправильное, т.к. по нему можно вывести только данные для 5-и значений, его тут нужно доработать, если значений у Вас намного больше
$arCatFilter = array("PROPERTY_SERIE"=> array($massiv["0"], $massiv["1"], $massiv["2"], $massiv["3"], $massiv["4"]));
else
$arCatFilter = array("%NAME" => $_REQUEST[‘q’]);
>
?>

Что бы правильно реализовать, нужно разобраться как catalog.search работает — введённый поисковый запрос отправляется в модуль поиска, а из него возвращается массив айдишников элементов инфоблока(товаров), который уже подаётся на вход компоненту catalog.section (без s !).
а результаты поиска отображаются во всплывающем окне прямо под компонентом поиска






