Артём Мáлков

Выводим изображения товара в результатах поиска в 1C-Bitrix

28 фев2 комм

Довелось мне поработать на одном сайте, который находился на 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'; // Ссылка на ваше изображение
		
}

Вроде бы все. Остались вопросы – пишите о них в комментариях.

Рекомендуем к просмотру
Массовый ресайз (изменение размеров) изображений в 1C-Bitrix
Хаки
ResizeImageGet: быстрое создание превью (ресайз) изображений в 1C-Bitrix
Статьи и советы
Как получить ссылку на полное (оригинальное) изображение в 1C-Bitrix?
Статьи и советы
2
комментария
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 3
    766
      •  Гости
    30 сен в 14:54

    Здравствуйте! Подскажите пожалуйста решение по данной ситуации:

    Вот результат страницы поиска:

    http://prntscr.com/l0fme8

    Там выводится ссылка с названием товара, которая ведет на карточку товара детальную.

    Пытался разобраться по примеру, не разобрался.

    Как благодаря вашему коду вывести в результатах поиска картинку из карточки товара и раздел в котором находится товар?

    http://prntscr.com/l0fmux - эта конструкция шаблона template.php компонентаsearch.page

    а это из result.modifier этого же компонента:

    http://prntscr.com/l0fnaw

    много чего перепробовал, но что то не получается, ничего не выводится.

      • 2
      1067
        •  Команда Pandoge
      30 сен в 17:39

      Александр, самый быстрый вариант - это прислать нам доступы, можно через комментарии (ftp+админка). Так сможем точно сказать в чем проблема.

Подняться наверх
«Pandoge» - помощник вебмастера