Bitrix

Добавить картинку в поисковую выдачу сайта

Я хочу рассмотреть достаточно простой вариант кастумизации шаблона стандартного компонента битрикс bitrix:search.page с тем чтобы для элементов каталога выдавались маленькие картинки товара.

Естественно, мы хотим, чтобы код компонента не подвергся модификации — по этой причине мы будет использовать файл result_modifier.php, который нужно создать в папке с шаблоном компонента. В файле result_modifier.php пишем такой код:

<?
foreach($arResult["SEARCH"] as &$arItem)
{
if ($arItem["PARAM1"]== "catalog" && $arItem["PARAM2"]== "4" && strpos($arItem["ITEM_ID"], "S")===false)
{
  $res = CIBlockElement::GetByID($arItem["ITEM_ID"]);
  if($ar_res = $res->GetNext())
    $arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($ar_res["PREVIEW_PICTURE"]);
}
}
?>

Постараюсь несколько пояснить код. В $arItem[«PARAM1»] передается тип информационного блока, в $arItem[«PARAM2»] — ID информационного блока. Если мы хотим ограничить количество инфоблоков, для которых в поиске будут показываться картинки, то следует использовать эти параметры.

В $arItem[«ITEM_ID»] передается ID элемента информационного блока, либо секции элементов. Если мы хотим, чтобы картинки показывались только для элементов, то нам необходимо дополнительное условие strpos($arItem[«ITEM_ID»], «S»)===false, которое есть в моем коде.

Мы добавили картинку в поиск, но нам нужно еще, чтобы она появилась в самом шаблоне. Для этого модифицируем файл template.php

Находим строки:

<?foreach($arResult["SEARCH"] as $arItem):?>
<a href="<?echo $arItem["URL"]?>"><?echo $arItem["TITLE_FORMATED"]?></a>
<?echo $arItem["BODY_FORMATED"]?></p>

 

и изменяем их вот так:

 

<?foreach($arResult["SEARCH"] as $arItem):?>
<a href="<?echo $arItem["URL"]?>"><?echo $arItem["TITLE_FORMATED"]?></a>
 <p><?if($arItem["PREVIEW_PICTURE"]):?><img src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" align="left" hspace="5" vspace="1"><?endif;?>
<?echo $arItem["BODY_FORMATED"]?></p>

 

После этих манипуляций в выдаче поискового компонента появятся картинки.

Комментариев: 2

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

14 − одиннадцать =