+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Вопрос, подкупающий своей новизной. Часто ли вам встречались иллюстрации в результатах поисковой выдачи на сайтах? В гигантах Яндекс и Google и то не так давно появилось это полезное и приятное усовершенствование. Не будем вдаваться в историю, но просто расскажем, как устроить это на «Битрикс».

 
Способ первый:

Добавим в стандартный компонент поиска код:

<?
$grab = GetIBlockElement($arItem["ITEM_ID"]);
$image1 = CFile::GetPath($grab["PREVIEW_PICTURE"]);
$image2 = CFile::GetPath($grab["DETAIL_PICTURE"]); 
?>


А точнее:

<?
$grab = GetIBlockElement($arItem["ITEM_ID"];);
$image_prw = CFile::GetPath($grab["PREVIEW_PICTURE"];);
//$image2 = CFile::GetPath($grab["DETAIL_PICTURE"];);
?>
<img src="<?=$image_prw;?>" width="60" height="45" alt="img" />



Бывает так, что в инфоблок не добавлено изображение. Чтобы не выводить пустой квадратик, добавим в компонент условие:

<?if($arResult["PREVIEW_PICTURE"]!='' && $arResult["DETAIL_PICTURE"]!=''):?>    
     <?
          $grab = GetIBlockElement($arItem["ITEM_ID"]);
          $image_prw = CFile::GetPath($grab["PREVIEW_PICTURE"]);
          $image2 = CFile::GetPath($grab["DETAIL_PICTURE"]);
      ?>

      <img src="<?=$image_prw;?>" width="60" height="45" alt="img" />
<?endif?>

 
Способ второй:

Прежде всего найдем в папке .default файл result_modifier.php. Точный путь:

/bitrix/templates/.default/components/bitrix/search.page/clear1/result_modifier.php

В самом конце, после закрывающего ?> добавим код:

<?
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, Точный путь:

/bitrix/templates/.default/components/bitrix/search.page/clear1/template.php

Выберем подходящее по структуре дизайна место и добавим в него код:

<?if (is_array($arItem["PICTURE"])):?>
     <img src="<?=$arItem["PICTURE"]["SRC"]?>"
           class="preview_picture" border="0" width="" height=""
           alt="<?=$arItem["PICTURE"]["ALT"]?> title="<?=$arItem["PICTURE"]["ALT"]?>" />
<?endif?>



А как вывести другие свойства элементов в поиске, например, как вывести свойство с кодом
PHONE?

Решение идентично второму способу.

В файл /bitrix/templates/.default/components/bitrix/search.page/clear1/result_modifier.php добавляем следующий код:

if (count($arResult["SEARCH"]) > 0) {

    $arIDs = array();
    foreach ($arResult["SEARCH"] as $si => $arItem) {
        if ($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S") {
            // связь: iblock_id => id : search_id
            $arIDs[ $arItem['PARAM2'] ][ $arItem["ITEM_ID"] ] = $si;
        }
    }

    CModule::IncludeModule('iblock');

    foreach ($arIDs as $iblockId => $searchIds) {
        // для инфоблоков 2.0 передавать IBLOCK_ID для выбора свойств обязательно
        $grab = CIBlockElement::GetList(array(), array(
            "IBLOCK_ID"     => $iblockId,
            "ID"             => array_keys($searchIds)
        ), false, false, array(
            "ID",
            "IBLOCK_ID",
            "PREVIEW_PICTURE",
            // Указываем необходимые свойства, в данном случае PHONE
            "PROPERTY_PHONE"
        ));
        while ($ar = $grab->Fetch()) {
            $ar['PICTURE'] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]);

            $si = $arIDs[ $iblockId ][ $ar["ID"] ];
            $arResult["SEARCH"][ $si ]["ELEMENT"] = $ar;
        }
    }
}



А файле шаблона /bitrix/templates/.default/components/bitrix/search.page/clear1/template.php выводим необходимые данные:

//...
<?foreach($arResult["SEARCH"] as $arItem):?>
         //....
         <p><?echo $arItem["ELEMENT"]['PROPERTY_PHONE_VALUE']?></p>
//....


--------------------------------
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!

Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA