Сложный поиск одновременно по нескольким полям в bitrix. Ищем не прямое вхождение а поск строки в подстроке (символы процентов). Поиск понимает гет запрос $_GET[‘s’] (…php?s=словапоиска)
OR- позволяет искать одновременно по нескольким полям.
1- обычный поиск по данному инфоблока
2. Поиск по значению настраиваемого полям
3. Поиск по значению связанного данного- у нас в данном коде нужно значение name.
пояснение.У нас есть инфоблок книги, есть второй инфоблок , называемый авторы. У одной книги может быть несколько авторов. Так вот, выводя книги мы фильтруем по имени автора. PROPERTY_ATT_AUTHOR- это настраиваемое поле книги. ДОбавляем точку и дописываем name- обращаемся уже к таблице автор и полю NAME автора. Т. битриском образовали связь один ко многим.
Аналогичен запросу (jeft join … on) в Mysql.
1 2 3 4 5 6 7 |
$arrFilter=array(); $arrFilter[]=array( "LOGIC" => "OR", array('NAME'=>'%'.strip_tags($_GET['s']).'%'), //ищем в поле имя array('property_att_seriya_book'=>'%'.strip_tags($_GET['s']).'%'), // поиск по серии- ищем в настраиваемом поле 'PROPERTY_ATT_AUTHOR.NAME'=>'%'.strip_tags($_GET['s']).'%', // поиск по имени автора в связном инфоблоке ); |
Далее arrFilter прописываем в нужном в компоненте.
Вот форма поиска с помощью которой мы обращаемся к разделу search . У формы выставлен метод GET. Кто не знает чем отличается post от get запроса- желательно просветиться.
1 2 3 |
<form action="/search" method="get" id=""> <input type="search" value="" name="s" > </form> |