Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Как вывести свойства инфоблока по отдельности и немного плюшек не в тему

Просмотров: 105492

Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании новости, они выводятся все вместе- списком. Но можно вывести их независимо друг от друга.

Для этого достаточно в шаблоне bitrix:news.detail вписать


<? echo $arResult['DISPLAY_PROPERTIES']['ATTRIBUTE']['DISPLAY_VALUE'];?>

Где: ATTRIBUTE - код свойства

Чтобы вывести и название и значение свойства есть вариант:


<? if ($arResult["DISPLAY_PROPERTIES"]['СВОЙСТВО']){?> //если не пустое
<?=$arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['NAME']?>  //вывести название
<?echo $arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['DISPLAY_VALUE'];?>  //и значение
<?}?> 

Чтобы вывести ссылку:


<? if ( $arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"] > 0 ) : ?>
<? echo '<a href="'.CFile::GetPath($arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"]).'">Скачать книгу</a> '; ?>
<? endif; ?> 

Чтобы вывести свойство типа строка в режиме html:


<? echo $arResult['DISPLAY_PROPERTIES']['ATTRIBUTE']['~VALUE'];?>

Что бы вевести свойство типа html/text:


<?=htmlspecialcharsBack($arResult["PROPERTIES"]["Название свойства"]["VALUE"]["TEXT"])?>

Свойство список в виде select


<select>
	<option>Выберите</option>
	<?$i=0;foreach($arResult["PROPERTIES"]["СВОЙСТВО"]["VALUE"] as $arRazmer):?>
	<option><?=$arRazmer?></option>
	<?endforeach;?>
</select>  

Множественное свойство типа список:


<?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
<?if($pid =="ATT_COMPANY"): ?>
<li><span>Арендодатель:</span> <?echo $arProperty["DISPLAY_VALUE"];?></li>
<?endif?>
<?endforeach;?> 

Вывести список связанных элементов со свойством привязка к элементам в виде списка


<?foreach($arResult["PROPERTIES"]["СВОЙСТВО"]["VALUE"] as $analog):?>
<?$res = CIBlockElement::GetByID($analog);?> 
<?if($ar_res = $res->GetNext())?> 
<li><b><a href='<?=$ar_res["DETAIL_PAGE_URL"];?>'><?=$ar_res["NAME"];?></a></b></li>
<?endforeach;?>

Вывести свойство файл-изображение как изображение а не ссылку на загрузку:


<?$что_нибудь_понятное = CFile::GetPath($arResult["PROPERTIES"]["СВОЙСТВО"]["VALUE"]);?> 
<img src="<?echo $что_нибудь_понятное;?>" />

Изображение торгового предложения


<img src="<?=CFile::GetPath($arOffer["PREVIEW_PICTURE"])?>">

Свойство типа файл с ссылкой на загрузку файла


<?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?> 
<? if($pid =="СВОЙСТВА_АТРИБУТ"): ?>
<li> 
<b>Дополнительные файлы</b> 
<?if(is_array($arProperty["DISPLAY_VALUE"])): 
echo implode($arProperty["DISPLAY_VALUE"]); 
elseif($pid=="MANUAL"): 
?>
<a href="<?=$arProperty["VALUE"]?>">Скачать</a> 
<?else: 
echo $arProperty["DISPLAY_VALUE"];?> 
<?endif?> 
</li> 
<?endif?>
<?endforeach;?>

Вывести множественное свойство типа файл, со всей информацией о файле: размер, название, транслитированное название, тип файла- в отдельной заметке.

Вывести колличество комментариев к элементу в списке новостей битрикс:


<?=(strlen($arItem["PROPERTIES"]["FORUM_MESSAGE_CNT"]["VALUE"]) > 0 ? $arItem["PROPERTIES"]["FORUM_MESSAGE_CNT"]["VALUE"] : "0");?>

Вывести и отресайзить детальную картинку товара знаная ID товара (или элемента)


<?
	$res = CIBlockElement::GetByID($arItem["ITEM_ID"]); 
	if($ar_res = $res->GetNext()){ 
	$img = CFile::ShowImage($ar_res["DETAIL_PICTURE"], 50, 50, "border=0", "", true);} 
?> 
<div class="bx_image" style="background-image: url('<?=$img?>')"></div>

Немного не в тему но может пригодиться: вывести колличество просмотров элемента инфоблока (с новостями точно работает):


// К парметру вывода компанента добавить: 
"LIST_FIELD_CODE" => array(0=>"SHOW_COUNTER",1=>"",), 
"DETAIL_FIELD_CODE" => array(0=>"SHOW_COUNTER",1=>"",), 
// В нужном месте шаблона вставить
<?=$arItem['SHOW_COUNTER']?> - для списка новостей 
<?=$arResult['SHOW_COUNTER']?> - для детальной новости

Немного костыльный, но однако способ: как вывести ссылку на детальный просмотр и изображение связанного элемента каталога. Для примера, имеем инфоблок с товарами и инфоблок с брендами. Нужно на странице бренда вывести все связанные элементы с ссылкой на детальный просмотр и картинку товара.


<?if(count($arResult["LINKED_ELEMENTS"])>0):?>
<b>Товары этого бренда в нашем каталоге:</b>
<?foreach($arResult["LINKED_ELEMENTS"] as $arElement):?> 
 
//это ссылка на детальный просмотр <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"> <?=$arElement["NAME"]?> </a>
//это картинка превью товара <? $res = CIBlockElement::GetByID($arElement["ID"]); if($ar_res = $res->GetNext()) echo CFile::ShowImage($ar_res['PREVIEW_PICTURE'], 200, 200, "border=0", "", true); ?> <?endforeach;?> <?endif?>

Свойство привязка к Google карте


 <? $arProperty = $arResult["DISPLAY_PROPERTIES"]; ?>
<? if (isset($arProperty['СВОЙСТВО'])):?>
<? $arPos = explode(",", $arProperty['СВОЙСТВО']['VALUE']);?>
<?$APPLICATION->IncludeComponent("bitrix:map.google.view", ".default", array( 
		"INIT_MAP_TYPE" => "MAP",
		"MAP_DATA" => serialize(array( 
		'google_lat' => $arPos[0], 
		'google_lon' => $arPos[1], 
		'google_scale' => 13, 
	'PLACEMARKS' => array ( 
		array( 
			'TEXT' => $arProperty["СВОЙСТВО_ГОРОД"]["VALUE"].", ".$arProperty["СВОЙСТВО_АДРЕС"]["VALUE"], 
			'LON' => $arPos[1], 
			'LAT' => $arPos[0], 
			), 
	), 
)), 
	"MAP_WIDTH" => "600", 
	"MAP_HEIGHT" => "600", 
	"CONTROLS" => array( 
	"SMALL_ZOOM_CONTROL",
	"SCALELINE" 
), 
	"OPTIONS" => array( 
	"ENABLE_SCROLL_ZOOM", 
	"ENABLE_DBLCLICK_ZOOM", 
	"ENABLE_DRAGGING", 
	"ENABLE_KEYBOARD" 
), 
	"MAP_ID" => "" 
), 
false 
);?> 
<?endif;?>

Вывести любое множественное свойство:


 <?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?> 
 <? if($pid =="MATERIAL"):?> 
 <li><b><?=$arProperty["NAME"]?>:</b> <?
 if(is_array($arProperty["DISPLAY_VALUE"])):
 echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
 elseif($pid=="MANUAL"):
 ?><a href="<?=$arProperty["VALUE"]?>"><?=GetMessage("CATALOG_DOWNLOAD")?></a><?
 else:
 echo $arProperty["DISPLAY_VALUE"];?>
 <?endif?></li>
 <?endif;?>
 <?endforeach;?>

Вывести теги с отправкой на страницу поиска

Вывести теги с отправкой на страницу поиска


<?
$arrTags = explode(',', $arResult["TAGS"]);
	$count = count($arrTags);
	$i = 0;
	foreach($arrTags as $value):
	$i++;
	$value = trim($value);
	echo ' <a href="/search/?tags='.str_replace(' ', '+', $value).'">'.$value.' </a>';
	endforeach;
?>

Вывести дату создания элемента в правильном формате "22 января 2015"


<?
$arParams["DATE_CREATE"]="j F Y";
	echo CIBlockFormatProperties::DateFormat($arParams["DATE_CREATE"], MakeTimeStamp($arItem["DATE_CREATE"], CSite::GetDateFormat()));
?>

Вывести количество просмотров элемента инфоблока. Если просмотров нет, вывести 0


 <?if (strlen($arItem['SHOW_COUNTER'])>0):?>
 <?=$arItem['SHOW_COUNTER']?>
 <?else:?>
	0
 <?endif;?>

Вывести количество комментариев к элементу инфоблока. Если просмотров нет, вывести 0


 <?if (strlen($arResult['DISPLAY_PROPERTIES']['BLOG_COMMENTS_CNT']['DISPLAY_VALUE'])>0):?>
 <?echo $arResult['DISPLAY_PROPERTIES']['BLOG_COMMENTS_CNT']['DISPLAY_VALUE'];?>
 <?else:?>
0
 <?endif;?>

Вывести путь к файлу из пользовательского поля раздела инфоблока в catalog.section.list

Для этого создаем два пользовательских поле типа Файл и даем им коды UF_FILE и UF_SECOND_FILE. В шаблоне catalog.section.list создаем файл result_modifier.php с содержимым:


$db_list = CIBlockSection::GetList(Array($by=>$order),
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ID"=>$arResult['SECTIONS']), true,
$arSelect=Array("UF_FILE", "UF_SECOND_FILE"));
while($ar_result = $db_list->GetNext()) {
    $arResult["UF_FILE"][$ar_result["ID"]] = CFile::GetPath($ar_result["UF_FILE"]);
      $arResult["UF_SECOND_FILE"][$ar_result["ID"]] = CFile::GetPath($ar_result["UF_SECOND_FILE"]);
}

В нужном месте шаблона catalog.section.list выводим пути к этим файлам (могут быть картинкой, файлом, чем угодно)


$arResult['UF_FILE'][$arSection['ID']];
$arResult['UF_SECOND_FILE'][$arSection['ID']];
Bakha 02.12.2021
Здравствуйте! Помогите пожалуйста разобраться.
Данный код выводит название элемента и ссылку на него.
Как вывести вместо название элемента вывести свойство?
Код
<?foreach($arResult["PROPERTIES"]["СВОЙСТВО"]["VALUE"] as $analog):?>
<?$res = CIBlockElement::GetByID($analog);?> 
<?if($ar_res = $res->GetNext())?> 
<li><b><a href='<?=$ar_res["DETAIL_PAGE_URL"];?>'><?=$ar_res["NAME"];?></a></b></li>
<?endforeach;?>
Название элемента
Код
<li><b><a href='<?=$ar_res["DETAIL_PAGE_URL"];?>'><?=$ar_res["NAME"];?></a></b></li>
Свойство элемента
Код
<li><b><a href='<?=$ar_res["DETAIL_PAGE_URL"];?>'><?=$ar_res["Свойство"];?></a></b></li>
Надеюсь понятно объяснил)
Максим 03.07.2022
Здравствуйте! Подскажите, пожалуйста,
Хочу вывести срок годности на видном месте, где он заполнен. Использую ваш 1 пример <? if ($arResult["DISPLAY_PROPERTIES"]['СВОЙСТВО']){?> //если не пустое <?=$arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['NAME']?> //вывести название <?echo $arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['DISPLAY_VALUE'];?> //и значение <?}?>
Но Не работает. Сейчас использую вот такой <div class="expired"><?=$arResult['PROPERTIES']['GODEN_DO']['VALUE']['NAME'];?></div> Показывается, но имя свойста "Годен до" везде отображается, даже у товаров у которых он не заполнен. Как правильно задать условие, чтобы показывалось имя свойства только при условии заполненного значения? Заранее спасибо.
Михаил Базаров 04.07.2022
Цитата
Максим написал:
Здравствуйте! Подскажите, пожалуйста,
Хочу вывести срок годности на видном месте, где он заполнен. Использую ваш 1 пример <? if ($arResult["DISPLAY_PROPERTIES"]['СВОЙСТВО']){?> //если не пустое <?=$arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['NAME']?> //вывести название <?echo $arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['DISPLAY_VALUE'];?> //и значение <?}?>
Но Не работает. Сейчас использую вот такой <div class="expired"><?=$arResult['PROPERTIES']['GODEN_DO']['VALUE']['NAME'];?></div> Показывается, но имя свойста "Годен до" везде отображается, даже у товаров у которых он не заполнен. Как правильно задать условие, чтобы показывалось имя свойства только при условии заполненного значения? Заранее спасибо.

Добрый
Попробуйте вот так:
Код
<?if (strlen($arResult['PROPERTIES']['GODEN_DO']['VALUE']) !== 0) {?>
   <?=$arResult['PROPERTIES']['GODEN_DO']['NAME'];?>:
    <?=$arResult['PROPERTIES']['GODEN_DO']['VALUE'];?>
<?}?>
Андрей 31.08.2022
Подскажите, пожалуйста, как вывести отдельное свойство инфоблока, у которого несколько значений должны быть разделены запятой
Михаил Базаров 31.08.2022
Цитата
Андрей написал:
Подскажите, пожалуйста, как вывести отдельное свойство инфоблока, у которого несколько значений должны быть разделены запятой

Если правильно понял вопрос:
Код
<?
echo implode(', ', $arResult['DISPLAY_PROPERTIES']['ВАШЕ_СВОЙСТВО']['VALUE']);
?>
Гость 01.09.2022
Цитата

<?
echo implode(', ', $arResult['DISPLAY_PROPERTIES']['ВАШЕ_СВОЙСТВО']['VALUE']);
?>
Супер! То что надо, спасибо!
Гость 08.12.2022
Михаил, добрый день!
Подскажите, пожалуйста, как в общем списке выделить отдельное свойство элемента цветом?
Андрей 08.12.2022
Уточнение к предыдущему вопросу
Как сделать, чтобы отдельное свойство элемента в общем списке выводилось определенным цветов (или курсивом)
Имеется ввиду и имя и значение (и [NAME] и [DISPLAY_VALUE])
Михаил Базаров 08.12.2022
Цитата
Андрей написал:
Уточнение к предыдущему вопросу
Как сделать, чтобы отдельное свойство элемента в общем списке выводилось определенным цветов (или курсивом)
Имеется ввиду и имя и значение (и [NAME] и [DISPLAY_VALUE])

Можно, просто версткой, получив нужное свойство через nth-child()
Например, если третье в списке:
Код
ul li:nth-child(3) {
  font-style:italic;
  color: red;
}
Андрей 09.12.2022
Цитата
написал:
Код
 ul li:nth-child(3) {
  font-style:italic;
  color: red;
}
 
Это не подойдет. Свойства могут быть заполнены не все. Соответственно порядковые номера у строк величина не постоянная. Но все равно спасибо за ответ

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Менять большую картинку, при клике на маленькую, в детальной карточке Просмотров: 1763 Мини скриптик, может кому пригодится для каталога товаров или новостей при использовании д... Использование WebP изображений в 1С-Битрикс (на Битрикс: Веб окружени... Просмотров: 25894 WebP это современный формат сжатия изображений, который позволяет, при правильных настройк... XML в формате Commerce ML-2, города России и Мира, для выгрузки в инф... Просмотров: 6301 Подвернулась задачка, создать инфоблок для Битрикс, в котором будут просто города России и... Подключение SSL на Битрикс виртуальная машина Просмотров: 11929 С первого января 2017 года, наличие безопасного соединения HTTPS становится практически об... Заполнить свойство инфоблока ценой из торгового каталога Просмотров: 4585 Если вам по какой-то причине нужно скопировать цену товара в свойство этого же инфоблока. ... Изменить размер картинок на лету в битрикс Просмотров: 46794 Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел... Вывести артикул в печатную форму бланка заказа Просмотров: 385 Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе. ... Не дать пользователю купить больше одного товара, в Битрикс Просмотров: 5148 Иногда нужно и такое: Например: на одном из разрабатываемых сайтов, мне нужно было создать... Настройка выгрузки товаров в Яндекс Маркет с сайта Битрикс Просмотров: 36701 Настройка выгрузки в Яндекс маркет в формате yml, выполняется достаточно просто, кроме одн... Почтовое событие на создание нового элемента инфоблока, через API Просмотров: 14341 Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблок... Помечаем новинки лейблом в каталоге битрикс Просмотров: 20036 Достаточно часто, при разработке каталога товаров или интернет магазина на системе управле... Информация о заказах и содержимое корзины текущего пользователя. Просмотров: 11776 В процессе разработки сайта могут понадобиться рецепты приведенные ниже. Использовать можн... Добавление в избранное или отложенные, на AJAX из карточки товара Просмотров: 27364 В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "И... Как подобрать редакцию Битрикс под задачи Просмотров: 6348 Последнее время, все чаще, при общении с заказчиками, сталкиваюсь с вопросом "— К... Минимальная сумма заказа в корзине и оформлении заказа в 1С-Битрикс Просмотров: 8484 В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне кор... Cordova, ввод в input под диктовку. Голосовой поиск в мобильном прило... Просмотров: 1263 Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам... Если пользователь авторизован то... API Битрикс Просмотров: 22252 Достаточно часто, при создании сайта на битрикс нужно вывести в шаблон или компонент, неку... Дать пользователю возможность быстро отредактировать материал Просмотров: 4364 На одном из разрабатываемых сайтов, пользователи формирую его контент. После регистрации, ... Заполнение габаритов товара, после обмена с 1С, из свойств элемента и... Просмотров: 10422 Если Ваш интернет-магазин интегрирован с 1С, скорее всего столкнулись с такой проблемой: 1... Показать пользователю накопительную скидку за все сделанные заказы, и... Просмотров: 1758 Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и ...