Задать вопрос
Mirkom63
@Mirkom63
Я программист

Не могу отфильтровать по содержимому в битриксе?

Пытаюсь вот так отфильтровать разделы:

<ul>
<?
$arSelect=array('UF_TITLE','UF_KEYWORDS','UF_DESCRIPTION','UF_AFTER_TEXT','UF_ALT');
$arFilter=array( 
    'IBLOCK_ID' => 1,
    array( 
        "LOGIC" => "OR", 
        'NAME'=>'%'.$_REQUEST['q'].'%', 
        'DESCRIPTION'=>'%'.$_REQUEST['q'].'%', 
    ),     
);
$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter,false,$arSelect);
while ($arSect = $rsSect->GetNext())
{ 
   ?>
   <li><a href="<?=$arSect['SECTION_PAGE_URL']?>"><?=$arSect['NAME']?></a></li><? 
} 

?>
</ul>


$_REQUEST['q'] - содержит слово, которое надо найти.
по NAME ищет нормально, а по DESCRIPTION нет....может потому что там html ?
Как найти слово в DESCRIPTION?
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
$arFilter=array( 
    'IBLOCK_ID' => 1,
    array( 
        "LOGIC" => "OR", 
        array('NAME'=>'%'.$_REQUEST['q'].'%'), 
        array('UF_DESCRIPTION'=>'%'.$_REQUEST['q'].'%'), 
    ),     
);

Попробуйте вот так
Ответ написан
initbit
@initbit Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
Судя по коду метода CIBlockSection::GetFilter, фильтровать по полю DESCRIPTION нельзя.

Нужно искать обходные пути или поправить метод.
Ответ написан
Комментировать
@aviseen
Воспользуйтесь D7:
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Iblock\SectionTable;

$res = SectionTable::getList([
    "filter" => ["IBLOCK_ID" => 4, "ACTIVE" => "Y", "DESCRIPTION" => '%'.$_REQUEST['q'].'%'],
    "select" => ["*"]
])->fetchAll();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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