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

37045  |  30

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

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

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

Где:
 DISPLAY_PROPERTIES - название свойства
 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 $что_нибудь_понятное;?>" />

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

1<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;?>
Расскажи друзьям-то:
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей
Зарегистрироваться Войти Напомнить пароль
Или войти через социальную сеть:
Гость сайта
Подскажите пожалуйста, так как я ну ни как не могу найти и понять...( Как изменить в комментариях слово "Guest" и как сделать "Ваш E-Mail:" обязательным для гостей. В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email (
Михаил Базаров
Цитата
Гость сайта пишет:
Подскажите пожалуйста, так как я ну ни как не могу найти и понять...( Как изменить в комментариях слово "Guest" и как сделать "Ваш E-Mail:" обязательным для гостей. В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email (
В Настройки - Настройки модулей - Форум: здесь изменяете названия категорий пользователей форума.
В Сервис - Форум - Список форумов - Конкретный форум: на вкладке "Настройки" устанавливаете чекбоксы "Запросить e-mail у гостя" и "Использовать CAPTCHA (если нужна)"
Гость сайта
Цитата
Михаил Базаров пишет:
В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email
Читайте внимательнее) Я нависал - В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email
Михаил Базаров
Цитата
Гость сайта пишет:
Цитата
Михаил Базаров пишет:
В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email
Читайте внимательнее) Я нависал - В настройках форума стоит - Настройки для незарегистрированных пользователей: запросить e-mail у гостя. Но не работает, форма для email есть, но толку нет, можно отправить комментарий не вводя email
Врядли получится, во всяком случае в Битриксе этого функционала не вижу, если только кастомизировать. С другой стороны, электронные ящики гостей не особо то и нужны (хотя конечно зависит от целей сбора этой информации о пользователях), так или иначе придется еще делать чекбокс на согласие с обработкой персональной информации, и дать ссылку на соглашение. Не помню какая часть, какого закона- но просто так нельзя собирать личную информацию.

PS Могу ошибаться, относится ли "мыло" к персональной информации (с точки зрения закона, так-то конечно относится). Во всяком случае в стандартном функционале ящики гостей ни где не сохраняются.
Дмитрий Рунов
Это только вывод для детальной новости ? Или код подойдет и для списка новостей ?
Михаил Базаров
Цитата
Дмитрий Рунов пишет:
Это только вывод для детальной новости ? Или код подойдет и для списка новостей ?
В общем и целом для чего угодно, и для каталога и для новостей. Главное правильно вызывать свойства. В этих примерах в основном для детальной новости.

Просто меняйте (правильно применяйте) массивы
Код
$arItem $arElement $arResult
Дмитрий
А как вывести автора элемента !?
Михаил Базаров
Цитата
Дмитрий пишет:
А как вывести автора элемента !?
Код
 <? 
      $create_user=$arResult["CREATED_BY"]; /ловим ID создателя 
      $GLOBALS['users'] = array("CREATED_BY" => $create_user); 
      $userid= $create_user;; /подставляем пойманый ID 
      $rsUser = CUser::GetByID($userid); 
      $arUser = $rsUser->Fetch(); 
      echo $arUser["NAME"]; //выводим имя 
?>
 
Автор с ссылкой на его страницу

Код
<?  $create_user=$arResult["CREATED_BY"];   
   $GLOBALS['users'] = array("CREATED_BY" =>  
   $create_user);  $userid= $create_user; 
   $rsUser = CUser::GetByID($userid);   
   $arUser = $rsUser->Fetch();  
?>  
<b>Добавил</b>:  
<a href="/users/<? echo $create_user;?>/" > 
     <? echo $arUser["NAME"];?> 
</a>  
Александр
Здравствуйте Михаил.
С помощью этого кода можно вывести одно свойство:

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


а если нужно вывести не одно свойство а двадцать свойств:
пример: у ноутбуков пять свойств, у планшетов три свойства от свойств ноутбуков и два новых свойств, у мониторов совсем другие свойства

подскажите пожалуйста как быть в этом случае? чтобы шаблон не увеличился на 60-ть строк)
Михаил Базаров
Цитата
Александр пишет:
А если нужно вывести не одно свойство а двадцать свойств:
пример: у ноутбуков пять свойств, у планшетов три свойства от свойств ноутбуков и два новых свойств, у мониторов совсем другие свойства

подскажите пожалуйста как быть в этом случае? чтобы шаблон не увеличился на 60-ть строк)
По умолчанию в стандартных шаблонах это уже имеется, ничего делать не надо.
Александр
Я не имел ввиду детальное описание, в детальном описании вывод работает, а мне нужно вывести в место анонса определенные инфоблоки, я и воспользовался вашим компонентом для добавление свойств и прописал их в своем шаблоне сайта, вывод свойств работает но у меня этих строк которые я писал выше 14х3 это еще не всё по плану их должно быть 40х3. Может можно как нибудь вывести свойства инфоблоков списком типа:
"DISPLAY_PROPERTIES" => array(
0 => "WIFI",
1 => "os",
2 => "HDD",
),
чтобы вывести название и значение свойства
Сергей
Подскажите, как вывести свойства - "Привязка к элементам в виде списка"?
Александр
Цитата
Михаил Базаров пишет:
Цитата
Дмитрий пишет:
А как вывести автора элемента !?
Код
  <? 
      $create_user=$arResult["CREATED_BY"]; /ловим ID создателя 
      $GLOBALS['users'] = array("CREATED_BY" => $create_user); 
      $userid= $create_user;; /подставляем пойманый ID 
      $rsUser = CUser::GetByID($userid); 
      $arUser = $rsUser->Fetch(); 
      echo $arUser["NAME"]; //выводим имя 
?>
  
Автор с ссылкой на его страницу
Код
 <?  $create_user=$arResult["CREATED_BY"];   
   $GLOBALS['users'] = array("CREATED_BY" =>  
   $create_user);  $userid= $create_user; 
   $rsUser = CUser::GetByID($userid);   
   $arUser = $rsUser->Fetch();  
?>  
<b>Добавил</b>:  
<a href="/users/<? echo $create_user;?>/" > 
     <? echo $arUser["NAME"];?> 
</a>  
 
К сожалению не работает данные коды на странице с детальным просмотром информации, может я что то упускаю?
Дмитрий
Как вывести свойство строка - я делаю как в уроке было показано.
Но чтобы он вывел цену не 10000руб, а 10 000 - т.е. с пробелом после 10 ?

Версия Битрикса самая простая!
Михаил Базаров
Цитата
Дмитрий пишет:
Как вывести свойство строка - я делаю как в уроке было показано.
Но чтобы он вывел цену не 10000руб, а 10 000 - т.е. с пробелом после 10 ?

Версия Битрикса самая простая!
Писать в строке с пробелом или  
Денис
Цитата
<?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
<?if($pid =="ATT_COMPANY": ?>
[*]<span>Арендодатель:</span> <?echo $arProperty["DISPLAY_VALUE"];?></li>
<?endif?>
<?endforeach;?>
Михаил множественное свойство типа список, у вас не работает. Я делаю так.

<?= "<div class='textname'>". $arResult['PROPERTIES']['ATTSIZES']['NAME'] .": </div>";?>
<?$attsizes = $arResult['PROPERTIES']['ATTSIZES']['VALUE'];?>
<?asort($attsizes);
foreach ($attsizes as $item){

echo "<span class='attsizes'>" . $item . "</span>" . "\n"; }?>
Олег
Здравствуйте. Помогите, пожалуйста. В общем, проблема такая: создал инфоблок, одно лишь свойство PHOTOS, в котором 4 изображения. В настройках инфоблока в разделе "Настройки списка - Свойство" нет моего свойства PHOTOS.
Именно поэтому такой код ничего не дает:
<?$photo = CFile::GetPath($arResult["PROPERTIES"]["PHOTOS"]["VALUE"&];?>
<img src="<?echo $photo;?>" />
Мне посоветовали самому вписать свойство, но оно, как мне сказали будет называться не PHOTOS, а как-то по-другому. Так как мне узнать, что писать в "Настройки списка - Свойство", как узнать, как еще это свойство PHOTOS может называться?
Михаил Базаров
Цитата
Олег пишет:
Здравствуйте. Помогите, пожалуйста. В общем, проблема такая: создал инфоблок, одно лишь свойство PHOTOS, в котором 4 изображения. В настройках инфоблока в разделе "Настройки списка - Свойство" нет моего свойства PHOTOS.
Именно поэтому такой код ничего не дает:
<?$photo = CFile::GetPath($arResult["PROPERTIES"]["PHOTOS"]["VALUE"&];?>
<img src="<?echo $photo;?>" />
Мне посоветовали самому вписать свойство, но оно, как мне сказали будет называться не PHOTOS, а как-то по-другому. Так как мне узнать, что писать в "Настройки списка - Свойство", как узнать, как еще это свойство PHOTOS может называться?
Это свойство нужно вписать руками, в настройках компанента увидите свободные поля сразу под окном с выбором свойств.
Но так как у вас множественное свойство, метод все равно не поможет.
Вам сюда http://camouf.ru/blog-note/301/
Максим
Михаил, если требуется у инфоблока товары, вывести связанные элементы из этого же инфоблока, например для вывода сопуствующих элементов? можете выложить код?
Виталий Элс
По поводу множественного свойства типа список - я делаю по другому - рабочий вариант:
Код
<? foreach($arResult["DISPLAY_PROPERTIES"]["ATT_COMPANY"]["VALUE"] as $ZNACH):?>
              <? if ($ZNACH == 'Свойство_1'): ?> 
              <p>Выведет контент для свойства 1</p>
              <? endif ?>
              <? if ($ZNACH == 'Свойство_2'): ?>
              <p>Выведет контент для свойства 2</p>
              <? endif ?>
              <? if ($ZNACH == 'Свойство_3'): ?>
              <p>Выведет контент для свойства 3</p>
              <? endif ?>
<? endforeach?>

Страницы: 1 2 След.

© 2011—2016 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.
Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой. Политика конфеденциальности
x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения: