ZIROKUL
@ZIROKUL

Как сравнить два инфоблока и вывести значения?

Добрый день

Подскажтие:

Есть два инфоблока один Каталог товар второй называется Бренды.
В первом хранятся товары из 1С, во втором заведенны бренды название и логотип.

У Каталога есть свойство: Торговая марка с символьным кодом ATT_TRADEMARK

У инфоблока Бренды в поле Название заводится точно такое же название с Бредами как в Каталоге в поле свойства Торговая марка
Пример:
Торговая марка с символьным кодом ATT_TRADEMARK = RIEKER
и Бренд название = RIEKER

С помощью CIBlockElement::GetList пытаюсь их сравнить в детальной карточке товара и вывести ссылку на страницу этого бренда, в инфоблоке Бренды может не быть бренда который выгружается в Каталог, для этого делаю условие в котором выводится просто название, но получается либо вывести ссылку у товара если такое есть бренд в инфо. Бренд, а у товара если такого бреда нету в инф. Бренд пропадает бренд полностью либо вывести бренд но бе ссылки.
подскажите что не так.
IBLOCK_ID"=> 4 - это инфоблока Бренды
<?	
	$arSelect = Array("CODE", "NAME");
	$arFilter = Array("IBLOCK_ID"=> 4, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
	$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>5010), $arSelect);

	while($ob = $res->GetNextElement())
	{
		$arFields = $ob->GetFields();	
			
			if($arResult["PROPERTIES"]["ATT_TRADEMARK"]["VALUE"] == $arFields["NAME"])
			{
				
					echo "<a href='/brend/brend-s/".$arFields["CODE"]."/'>".$arResult['PROPERTIES']['ATT_TRADEMARK']['VALUE']."</a>";	
				
			}
//Если присутствует ниже указанный if то выводятся бренды у всех товаров без ссылки, если его убрать то бренд присутствует ссылкой только у товара у которого есть бред, а у товара у которого бренда нету она отсутствует
			if(!$arResult["PROPERTIES"]["ATT_TRADEMARK"]["VALUE"] == $arFields["NAME"])
			{
				
				echo $arResult['PROPERTIES']['ATT_TRADEMARK']['VALUE'];	
				break;
			}
	}
				
?>

Надеюсь описал понятно.
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
sabramovskikh
@sabramovskikh
Что за код? Это жесть какая-то.
Добавьте фильтрацию по имени. А то у вас запрос через жопу работает.

Но вообще ваш подход плохой. Надо после импорта из 1С писать обработчик, который пробежится по таварам и поставит новое свойство "Привязка к элементу инфоблока Бренды" и работать с ним
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы