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

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

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

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

Для этого достаточно в шаблоне 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']];
Михаил Базаров22.09.2017
Цитата
Александр Кузнецов написал:
Михаил, добрый день. Подскажите пожалуйста в чем проблема.
Хочу в краткое описание материала блога вывести отдельные строки: Адрес, Дата/Время. В настройках инфоблока, добавил нужные поля:  http://prntscr.com/go9djw . В код также добавил:  http://prntscr.com/go9dti . Но здесь:  http://prntscr.com/go9dzy  не выводит. Хотя, стандартные строки типа дата создания без проблем. Что не так делаю?
А на вывод их выделили в настройках компонента (картинки не открываются)
Александр Кузнецов22.09.2017
Цитата
Михаил Базаров пишет:
Цитата
Александр Кузнецов написал:
Михаил, добрый день. Подскажите пожалуйста в чем проблема.
Хочу в краткое описание материала блога вывести отдельные строки: Адрес, Дата/Время. В настройках инфоблока, добавил нужные поля: http://prntscr.com/go9djw . В код также добавил: http://prntscr.com/go9dti . Но здесь: http://prntscr.com/go9dzy не выводит. Хотя, стандартные строки типа дата создания без проблем. Что не так делаю?
А на вывод их выделили в настройках компонента (картинки не открываются)
Так точно: http://prntscr.com/goayyd
Александр Кузнецов22.09.2017
Цитата
Александр Кузнецов пишет:
Цитата
Михаил Базаров пишет:
Цитата
Александр Кузнецов написал:
Михаил, добрый день. Подскажите пожалуйста в чем проблема.
Хочу в краткое описание материала блога вывести отдельные строки: Адрес, Дата/Время. В настройках инфоблока, добавил нужные поля: http://prntscr.com/go9djw . В код также добавил: http://prntscr.com/go9dti . Но здесь: http://prntscr.com/go9dzy не выводит. Хотя, стандартные строки типа дата создания без проблем. Что не так делаю?
А на вывод их выделили в настройках компонента (картинки не открываются)
Так точно: http://prntscr.com/goayyd
Картинки должны открываться, только что проверил.
osinalex8810.10.2017
Добрый день, прошу помощи.
Не могу вывести в массиве связанные свойства инфоблока.
Если без массива вывести свойство (https://yadi.sk/d/YqflbDyR3Nbt4Z): то работает нормально этот код:
Но если я это свойство переключаю во множественное (https://yadi.sk/d/FY6Wrbkb3Nbt8m): то не могу понять как вывести эти свойства.
Помогите разобраться, как этот пример привратить в массив?

Код
<?
$arTable = GetIBlockElement($arResult["PROPERTIES"]["ATT_PRICE_TABLE"]["VALUE"]);
$arTablePrice = $arTable["PROPERTIES"]["ATT_PRICE"]["VALUE"];
?>
<?=$arTablePrice;?>
ivdic27.10.2017
Подскажите как в bitrix:search.page  (результатах поиска стандартного компонента) вывести дополнительное свойство FILE в виде ссылки
ivdic30.10.2017
Цитата
ivdic пишет:
Подскажите как в bitrix:search.page (результатах поиска стандартного компонента) вывести дополнительное свойство FILE в виде ссылки
вставляю

<? echo $arResult['PROPERTIES']['FILE']['VALUE'];?>
и
<? echo $arResult['DISPLAY_PROPERTIES']['FILE']['DISPLAY_VALUE'];?>


вообще ничего не выводится...может где какие переменные надо объявить?
ivdic09.11.2017
аууу... есть кто живой тут?
Antik09.11.2017
Хотя бы весь листинг кода привели...
Алексей Богомолов25.12.2017
Здравствуйте Михаил!

Пытаюсь вывести отдельное свойство ссылкой:  

Код
 <? if ( $arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"] > 0 ) : ?> 

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

    <? endif; ?>  
 
 



в файле: catalog.section ,  но что-то не получается. Помещаю этот код в отдельный див после дива с тайтлом. Не подскажите что делаю не так, не получается разобраться.
Код
     
Сергей Стефанович01.02.2018
Вывести множественное свойство привязка к элементам в виде списка.


Код
<?foreach($arResult["PROPERTIES"]["TRENER"]["VALUE"] as $analog):?>
    <?$res = CIBlockElement::GetByID($analog);?>
    <?if($ar_res = $res->GetNext())?>

        <img src="<?=CFile::GetPath($ar_res["PREVIEW_PICTURE"])?>">
        <?=$ar_res["NAME"];?>
        <?=$ar_res["PREVIEW_TEXT"];?>

        <p><?=$ar_res["DISPLAY_PROPERTIES"]["TEL_TRENER"]["VALUE"];?></p>
<?endforeach;?>
 

Стандартные свойства выводятся, последнее (тип строка) не выводится
Алексей Сель21.02.2018
Здравствуйте! Подскажите пожалуйста как вывести по отдельности свойства элемента в catalog.top?
Михаил Базаров21.02.2018
Цитата
Алексей Сель написал:
Здравствуйте! Подскажите пожалуйста как вывести по отдельности свойства элемента в catalog.top?
Точно также как и в catalog.section у них шаблоны принципиально не отличаются
Алексей Сель21.02.2018
Цитата
Михаил Базаров пишет:
Цитата
Алексей Сель написал:
Здравствуйте! Подскажите пожалуйста как вывести по отдельности свойства элемента в catalog.top?
Точно также как и в catalog.section у них шаблоны принципиально не отличаются
использую
Код
<?=$arItem['PROPERTIES']['BR_PRICE']['VALUE']?>
нефига не происходит(
Михаил Базаров22.02.2018
Цитата
Алексей Сель написал:
Цитата
Михаил Базаров  пишет:
Цитата
Алексей Сель написал:
Здравствуйте! Подскажите пожалуйста как вывести по отдельности свойства элемента в catalog.top?
Точно также как и в catalog.section у них шаблоны принципиально не отличаются
использую
Код
 <?=$arItem['PROPERTIES']['BR_PRICE']['VALUE']?> 
нефига не происходит(  
Потомучто в топе, как и в catalog.section, нужно использовать $arElement

<?=$arElement['PROPERTIES']['BR_PRICE']['VALUE']?>
Алексей Сель22.02.2018
Цитата
Михаил Базаров пишет:
Цитата
Алексей Сель написал:
Цитата
Михаил Базаров пишет:
Цитата
Алексей Сель написал:
Здравствуйте! Подскажите пожалуйста как вывести по отдельности свойства элемента в catalog.top?
Точно также как и в catalog.section у них шаблоны принципиально не отличаются
использую
Код
  <?=$arItem['PROPERTIES']['BR_PRICE']['VALUE']?>  
нефига не происходит(
Потомучто в топе, как и в catalog.section, нужно использовать $arElement

<?=$arElement['PROPERTIES']['BR_PRICE']['VALUE']?>
arElement тоже пробовал, не работает, у меня в общем ТОП это  слайдер для популярных товаров, выводится на главную, может есть разница какая то что он вне комплексного компонента вставлен?
Алексей Клёнин08.11.2018
Михаил, добрый вечер.
Подскажите пожалуйста, в детальном просмотре выводятся дополнительные свойства, порядка 10 штук, в одном месте.
Среди них есть 1 свойство, содержащее ссылку на видео, его нужно выводить на этой же странице, но в другом месте. С этим проблем нет, его мы выводим отдельно.

Вопрос, как можно удалить это свойство, содержащее ссылку на видео из вывода всех полей, которые выводятся через foreach? Пробовал через unset почему то не получилось, также пробовал через continue. Тоже безрезультатно. Какие ещё могут быть варианты?
Елена Беляева21.03.2019
Здравствуйте, подскажите пожалуйста почему не выводится свойство
<?if(!empty($arResult["DETAIL_PICTURE"]["SRC"])):?>

      <div class="tickets_block">

           <?if($arResult['PROPERTIES']['ATT_TICKETS']['VALUE_XML_ID']=='Y'):?>        
                 <span class="tickets_icon"></span>
           <?endif?>

<img src="<?=$arResult["DETAIL_PICTURE"]["SRC"];?>" alt="<?=$arResult["NAME"];?>" class="actions">
</div>
<?endif;?>
В каталоге работает, а вот в news.detail не срабатывает.
Микки Маус07.06.2019
Добрый день, Михаил!

В комплексном каталоге этот код не работает:
Код
<? if ($arResult["DISPLAY_PROPERTIES"]['СВОЙСТВО']{?> //если не пустое 
<?=$arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['NAME']?>  //вывести название 
<?echo $arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['DISPLAY_VALUE'];?>  //и значение  
Опытным путем подобрал рабочий:
Код
<? if ($arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"]){?>
<?=$arItem["PROPERTIES"]["СВОЙСТВО"]['NAME']?> 
<?=$arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"];?>
<?}?> 
Я только начинаю осваивать Битрикс и пока не понимаю, в чем отличия arResult от arItem, DISPLAY_PROPERTIES от PROPERTIES, DISPLAY_VALUE от VALUE, а также какие кавычки ставить.

Еще может кому пригодится код для создания ссылки:
Код
<? if ($arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"]){?>
<a href="<?=$arItem["PROPERTIES"]["СВОЙСТВО"]["VALUE"];?>"><?=$arItem["PROPERTIES"]["СВОЙСТВО"]["NAME"];?></a>
<?}?> 
 
ольга евдокимова04.08.2020
Огромное спасибо за материал! Сколько миллонов раз я его использовала на сайтах, просто не описать словами!
Bakha02.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>
Надеюсь понятно объяснил)

Случайные заметки

FTP доступ на Виртуальной машине Битрикс

Просмотров: 14338 Комментариев: 14
Бывает что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С Битрикс, который работает на виртуальной машине от Битрикс. ...