Как вывести фотографии в результатах поиска Битрикс
Для наиболее оптимального решения проблемы нам понадобится собрать массив для всех id, сделать один запрос для вызова GetList и выдать на гора массив $arResult с нужным нам результатом.
Для этого найдем и откроем файл result_modifier.php. Дабы не запутаться, не перепутать скобки и т.п дребедень в файле, допишем в самом конце ( после ?> )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<? if($arResult["SEARCH"]){ $arID = array(); foreach($arResult["SEARCH"] as $i => $arItem) { if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S") $arID[$arItem["ITEM_ID"]] = $i; } $grab = CIBlockElement::GetList(array(),array("ID" => array_keys($arID)),false,false,array("ID","IBLOCK_ID","PREVIEW_PICTURE")); while($ar = $grab->Fetch()){ $arResult["SEARCH"][$arID[$ar["ID"]]]["PICTURE"] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]); } } ?> |
В самом шаблоне template.php вставляем в подходящее по дизайну место следующий код
1 2 3 |
<?if(is_array($arItem["PICTURE"])):?> <img class="preview_picture" border="0" src="<?=$arItem["PICTURE"]["SRC"]?>" width="<?=$arItem["PICTURE"]["WIDTH"]?>" height="<?=$arItem["PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["PICTURE"]["ALT"]?> title="<?=$arItem["PICTURE"]["ALT"]?>"> <?endif?> |