Битрикс — картинки и цены на странице поиска

23.11.2017  08:06

Стандартная задача: на странице поиска (search.page) вывести картинки, цены товаров и свойства.

Создаём (если его нет) result_modifier.php в директории шаблона компонента.
$CATALOG_IBLOCK_ID = 2;//id инфоблока каталога
CModule::IncludeModule("catalog");
$PRICES = CIBlockPriceTools::GetCatalogPrices($OFFERS_IBLOCK_ID, array("BASE"));//тип цены "базовая"
foreach ( $arResult["SEARCH"] as $itemIndex => $arItem ) {
	if($arItem["PARAM2"] == $CATALOG_IBLOCK_ID){
		$arSelectOffer = array(
			"ID",
			"NAME",
			"IBLOCK_ID",
			"DETAIL_PICTURE",
			"DETAIL_PAGE_URL",
			"CATALOG_PRICE_1",
			"PROPERTY_CML2_ARTICLE"
		);
		foreach ( $PRICES as $key => $value ) {
			$arSelectOffer[] = $value["SELECT"];
		}
		$arFilterOffer = array(
			"IBLOCK_ID" => $arItem["PARAM2"],
			"IBLOCK_ACTIVE" => "Y",
			"ACTIVE_DATE" => "Y",
			"ACTIVE" => "Y",
			"ID" => $arItem["ITEM_ID"]
		);
		$rOffer = CIBlockElement::GetList(
			array(), 
			$arFilterOffer, 
			false, 
			false, 
			$arSelectOffer
		);
		if ( $arCurrentItem = $rOffer->GetNext() ) {
			if (!empty($arCurrentItem["DETAIL_PICTURE"])) {//детальная картинка
				$imageId = $arCurrentItem["DETAIL_PICTURE"];
				$arImg = CFile::ResizeImageGet(
					$imageId,
					array("width" => 150, "height" => 150),
					BX_RESIZE_IMAGE_PROPORTIONAL,
					false,
					false,
					false,
					100
				);
				if(empty($arImg["height"]) && empty($arImg["width"])) {
					$sizes = getimagesize($_SERVER["DOCUMENT_ROOT"].$arImg["src"]);
					$arImg["width"] = $sizes[0];
					$arImg["height"] = $sizes[1]; 
				}
				$arResult["SEARCH"][$itemIndex]["DETAIL_PICTURE"] = '';
			}
			unset($PRICE_ARR);
			$PRICE_ARR[] = $arCurrentItem["CATALOG_PRICE_1"];//цены
			$arResult["SEARCH"][$itemIndex]["PRICE"] = min($PRICE_ARR);
			if (!empty($arCurrentItem["PROPERTY_CML2_ARTICLE_VALUE"])) {//артикул (бонус :))
				$arResult["SEARCH"][$itemIndex]["ARTICLE"] = $arCurrentItem["PROPERTY_CML2_ARTICLE_VALUE"];
			}
	}
	}
}


В самом шаблоне внутри foreach($arResult["SEARCH"] as $arItem):
		if (!empty($arItem["ARTICLE"])) echo '
Артикул: '.$arItem["ARTICLE"].'
'; unset($price); if (!empty($arItem["PRICE"])) { $price = $arItem["PRICE"]; $price = FormatCurrency($price, "RUB"); echo '
Цена: '.$price.'
'; }


Всё! Таким-же кондебобером можно сделать и для картинок из других инфоблоков и для других свойств.


перейти в Блог | Блог (стр. 3)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 26  PHP 37  web-программирование 58  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)