Выводим изображения товара в результатах поиска в 1C-Bitrix
Довелось мне поработать на одном сайте, который находился на CMS 1C-Bitrix, и задача состояла в том, чтобы немного преобразить результаты поиска на нем. Но проблема была в том, что по умолчанию битриксом не предусмотрен вывод изображений в поиске – а именно они мне и были нужны.
Задача это решается очень просто, и как именно, я сейчас расскажу.
В файле, отвечающем за вид результатов поиска (у меня этот был файл template.php в папке /bitrix/templates/название_темы/components/bitrix/search.page/.default/) внутри метода foreach (желательно в самом его верху), вы используете следующую конструкцию:
<?php
$get_id_images = GetIBlockElement($arItem['ITEM_ID']);
$images_tumb = CFile::GetPath($get_id_images['PREVIEW_PICTURE']);
$image_full = CFile::GetPath($get_id_images['DETAIL_PICTURE']);
?>
Переменные $images_tumb и $image_full содержат в себе ссылки на превью и полное изображение соответственно.
И здесь же чуть ниже (в нужное место) вы вставляете следующий код непосредственно для вывода изображения товара:
<?php
if($images_tumb != "") {
echo <<<HTML
<img src="{$images_tumb}" />
HTML;
}
?>
Конструкция foreach, в которой я это использовал, выглядела примерно следующим образом:
<? foreach($arResult['SEARCH'] as $arItem): ?>
...
Вид результатов поиска
...
<? endforeach; ?>
Помимо этого, вы можете создать условие, которое выведет ваше изображение у товаров, где свое изображение отсутствует. Это так называемое no photo.
Для этого строки:
$images_tumb = CFile::GetPath($get_id_images['PREVIEW_PICTURE']);
$image_full = CFile::GetPath($get_id_images['DETAIL_PICTURE']);
замените на:
$images_tumb = CFile::GetPath($get_id_images['PREVIEW_PICTURE']);
if($images_tumb == '') {
$images_tumb = '/no-photo.jpg'; // Ссылка на ваше изображение
}
$image_full = CFile::GetPath($get_id_images['DETAIL_PICTURE']);
if($image_full == '') {
$image_full = '/no-photo.jpg'; // Ссылка на ваше изображение
}
Вроде бы все. Остались вопросы – пишите о них в комментариях.