Вывести свойство файл битрикс

Обновлено: 06.07.2024

Фильтрация элементов инфоблока по свойству в компонентах Bitrix

Предположим у нас есть список статей. Статья имеет свойство "Рубрика" (тип свойства - справочник) в котором соответственно выбирается название рубрики к которой относится статья.

Структура файлов компонента bitrix:news следующая:

Так как фильтрация и сортировка элементов происходит в списках элементов, то нам нужно внести изменения в работу компонентов bitrix:news.list, который отвечает за вывод списка записей.

Список элементов выводятся на странице Общего списка новостей - news.php и на странице Раздела списка новостей - section.php.

Для фильтрации по нашему свойству Рубрика потребуется подготовить массив данных - содержащих название рубрики и xml_id ( для фильтрации по свойству типа справочник, нужно указывать xml_id фильтруемого значения ).

Чтобы подготовить нужный набор данных создадим в папке шаблона компонента файл result_modifier.php со следующим содержанием:

Данные готовы. Теперь сделаем шаблон вывода фильтрации. Открываем для редактирования файл news.php. Перед 55 строкой ( перед вызовом компонента news:list ) добавим следующий код:

Кроме того обязательно перед вызовом компонента news.list так же добавим параметры для фильтрации ( именно этот код определяет работу фильтрации, передаёт параметры фильтра в компонент news.list )

Этот код ОБЯЗАТЕЛЬНО нужно размещать перед вызовом компонента news.list.
Код вывода списка значений свойства ( Рубрики ) можно выводить в любом месте страницы, в соответствии с Вашим дизайном.

Добавим стили для созданных элементов, для этого создадим в папке с шаблоном компонента файл style.css или если файл уже существует то добавим в него в конце следующие стили:

Получим вот такой стилизованный список рубрик для фильтрации:

Таким образом мы добавили функционал для фильтрации элементов по свойству типа справочник.

Важно! Свойства инфоблока файл не отображаются в Параметрах компонента (настройки с иконкой шестеренка). Поэтому их вызов только через PROPERTIES, а не DISPLAY_PROPERTIES.


Если в настройках компонента не стоит NAME то массив с изображениями не выведется

Ресайз изображений налету

  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize без сохранения пропорций;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.

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

<?
$file = CFile::ResizeImageGet(($arResult["DETAIL_PICTURE"]), array('width'=>800, 'height'=>800), BX_RESIZE_IMAGE_PROPORTIONAL, true);
echo '<img src="https://gvozdevsoft.ru/info/tekhrazdel/bitriks/'.$file['src'].'" width="'.$file['width'].'" height="'.$file['height'].'" alt="'.$arResult["NAME"].'" title="'.$arResult["NAME"].'" />';
?>

Ресайз изображений для Каталога (catalog.section)

<?
$file = CFile::ResizeImageGet(($item["PREVIEW_PICTURE"]["ID"]), array('width'=>800, 'height'=>800), BX_RESIZE_IMAGE_PROPORTIONAL, true);
echo '<img src="https://gvozdevsoft.ru/info/tekhrazdel/bitriks/'.$file['src'].'" width="'.$file['width'].'" height="'.$file['height'].'" alt="'.$item["NAME"].'" title="'.$item["NAME"].'" />';
?>

Конструкция для вывода картинки анонса с проверками и ресайзом

<?if($arParams["DISPLAY_PICTURE"]!="N" && $arItem["PREVIEW_PICTURE"]):?>
<div >
<a href="<?echo $arItem["DETAIL_PAGE_URL"]?>">
<?
$file = CFile::ResizeImageGet(($arItem["PREVIEW_PICTURE"] ? $arItem["PREVIEW_PICTURE"] : $arItem["DETAIL_PICTURE"]), array('width'=>700, 'height'=>700), BX_RESIZE_IMAGE_PROPORTIONAL, true);
echo '<img src="https://gvozdevsoft.ru/info/tekhrazdel/bitriks/'.$file['src'].'" width="'.$file['width'].'" height="'.$file['height'].'" alt="'.$arItem["NAME"].'" />';
?>
</a>
</div>
<?endif;?>

Условие, если поле заполненное вывести его значение (один элемент)

<? if($arItem["DISPLAY_PROPERTIES"]["ATT_TEXT"]["VALUE"]):?>
<?=$arItem["DISPLAY_PROPERTIES"]["ATT_TEXT"]["VALUE"];?>
<?endif;?>

<? if($arResult["DISPLAY_PROPERTIES"]["ATT_TEXT"]["VALUE"]):?>
<?=$arResult["DISPLAY_PROPERTIES"]["ATT_TEXT"]["VALUE"];?>
<?endif;?>

Важно!

Отличие PROPERTIES от DISPLAY_PROPERTIES

Если узазать DISPLAY_PROPERTIES то будут выведены свойства инфоблока, которые выбраны в настройках параметра Компонента.

Если какое либо свойство не отображается в параметрах компонента (например свойство файл), то указывается через PROPERTIES.

Если свойство определяется в параметрах компонента, то можно к нему обратиться как через DISPLAY_PROPERTIES так и через PROPERTIES



Конструкция if


Так работают все проверки. Проверяется если поле не пустое, то массив arItem отдает true следовательно условие выполняется

<? if($arItem["DISPLAY_PROPERTIES"]["ATT_LINK"]["VALUE"]):?>
Действие
<?else:?>
Действие
<?endif;?>

Ссылки

<a href="<?=$arItem["DETAIL_PAGE_URL"]?>"> - ссылка на детальную страницу

<a href="<?echo $arItem["DETAIL_PAGE_URL"]?>"><?=$arItem["NAME"]?></a> - вывод ссылки на детальную страницу. Анкор ссылки взят из поля "Название"

Когда какой массив используется $arResult и $arItem

$arResult основной массив в который может входить множество массивов $arItem

Если вы работаете с news.list либо news-news.list то сначала создается массив $arResult в котором создаются $arItem. И обращение в этих шаблонах (template.php) будет только к $arItem

Задается он следующим образом
<?foreach($arResult["ITEMS"] as $arItem):?>
Внутри этого массива обращение только к $arItem
<?endforeach;?>

Свойства элементов Битрикса - очень большая часть в разработке сайта на данной системе управления. Хочу поделится несколькими нужными моментами в работе с ними.

1. Выводит ключи по которым доступны необходимые данные компонента:

Выводит ключи по которым доступны необходимые данные элемента на странице списка элементов компонента.


2. Выводит свойство на странице элемента компонента, если это не массив:

Для вывода свойства элемента на странице списка элементов компонента используется $arResult.

2.1. Если свойство в виде массива данных (будет разделен / ):


2.3. Если свойство в виде массива фотографий:

Пример в виде таблицы. В примере используется еще галерея и стиль CROP, но не обращайте на них внимания, это сделано уже для себя, т.к. часто их использую.

3. Выводит ссылку на файл свойства типа "файл":


4. Выводит фото раздела компонента:

Код <img style="max-width:300px" src="https://devfix.ru/web_studio/blogs/512/<?=$arResult["PICTURE"]["SRC"]?>" title="<?=$arResult["NAME"]?>" />


5. Выводит описание раздела компонента:


6. Выводит массив свойства "Файл" с описанием к ним. Для этого предварительно в свойствах "Файл" ставится галочка "Выводить поле для описания значения:"

<?php if ($arItem["PROPERTIES"]["D_F_1"]["VALUE"]) )"> <img style="margin-top: 10px" width="100" height="100" src="<?=CFile::GetPath($val); ?>" alt= "<?=$arItem["PROPERTIES"]["D_F_1"]["DESCRIPTION"][$PHOTO];?>" /></a><br><br> <?=$arItem["PROPERTIES"]["D_F_1"]["DESCRIPTION"][$PHOTO];?> <?endforeach?> <?endif?> <?php >?>


7. Не множественное свойство "Привязка к элементу". Наш элемент имеет свойство PRICE типа "Привязка к элементам" и нам нужно вывести в нем свойство PRICE_DOWN от привязанного элемента. Для этого используем код ниже:


8. Вывести текущую директорию из файла .section.php в шаблоне сайта:

<? include($_SERVER['DOCUMENT_ROOT'].$APPLICATION->GetCurDir().'.section.php'); print $sSectionName;?>


9. Условие, когда пользователь авторизован под Администратором:


10. При выводе свойства или переменной меняем занчение какого-либо символа или кода на свой код:


11. Условие, если число не делится без остатка на 4:


12. Выводим свойство, ограничивая количество символов до 13 штук:


При работе с бизнес-процессом в параметрах действий, параметрах шаблона и настройках статуса можно указывать как собственный текст, заданный вручную, так и использовать различные переменные, поля документа и прочие данные, которые не нужно задавать вручную. Для этого используется специальная форма Вставка значения:

  • Параметры шаблона - вставка параметров шаблона, которые задаются для конкретного шаблона в соответствующей форме, доступной по кнопке Параметры шаблона на контекстной панели визуального конструктора бизнес-процесса. Значением параметра будет то, что введет пользователь в соответствующих полях при запуске бизнес-процесса.
  • Переменные - вставка пользовательских переменных, которые могут изменяться по ходу выполнения бизнес-процесса.
    Пример: дополнительное числовое поле, заполняемое пользователем в процессе выполнения бизнес-процесса.
  • Константы - вставка заранее заданных констант, которые остаются неизменными в процессе исполнения бизнес-процесса. Их значение задается в параметрах шаблона и пользователь, не имеющий доступа к изменению процессов не может менять их значение.
  • Поля документа - вставка значения какого-либо поля документа, участвующего в бизнес-процессе.
    Например: Дата создания или Кем создан.
  • Дополнительные результаты - вставка результатов выполнения некоторых действий. Не все действия после их выполнения предоставляют дополнительные результаты. В списке отображаются сразу все доступные результаты для всех действий, добавленных в текущий процесс, если они их поддерживают.
  • Пользователи - вставка пользователя или группы пользователей, которые будут причастны к выполнению бизнес-процесса. Можно выбрать несколько пользователей/групп пользователей. Для этого в качестве разделителя используется символ ; .
  • Категории пользователей - позволяет более подробно указать пользователей, которые будут причастны к выполнению бизнес-процесса. В том числе можно выбрать Отдел или Группу соцсети.
Можно вставлять как отдельные группы пользователей, так и целые отделы и группы социальной сети. Для этого в настройках прав доступа к элементам и разделам процесса нужно указать группы, которые вы хотите чтобы отображались в форме. Любая помещенная в эту вкладку группа вне зависимости от указанного уровня доступа будет отображаться в списке. Данная возможность пока недоступна в бизнес процессах в универсальных списках.

Следующие значения недоступны напрямую из формы, но могут быть использованы при проектировании шаблона бизнес-процесса:

  • - идентификатор бизнес-процесса;
  • - идентификатор текущего пользователя в формате user_[номер_пользователя_в_системе];
  • - параметр, в котором содержится идентификатор пользователя, запустившего бизнес-процесс в формате user_[номер_пользователя_в_системе];
  • - текущая дата со временем на сервере;
  • - текущая дата со временем у клиента (учитывается часовой пояс);
  • - текущая дата без времени;
  • - позволяет получить ссылку на страницу детального просмотра документа, при условии, что в настройках инфоблока корректно заполнен URL страницы детального просмотра.
Использование некоторых значений полей контактов/компаний (для облачной версии)

В рамках бизнес-процессов для сделок в CRM можно использовать некоторые значения из полей контакта или компании, которые связаны с этой сделкой.

Для Контактов можно использовать следующие значения:

Для Компаний можно воспользоваться следующими значениями:

Модификация типов данных

Для параметров и переменных шаблона, а так же полей документа используется модификатор printable , преобразующий значения в понятную пользователю строку.

Для переменной типа пользователь это выглядит следующим образом:

Результат, если значение переменной равно Автор :

Если для поля документа или параметра доступен такой вариант отображения, то он будет представлен в форме Вставка значения. Если же печатная форма не предусмотрена, то можно запросить вывод печатной формы от любого значения (переменная, дополнительный результат и т.п.).

Кроме того, можно преобразовывать не только в печатную форму, но и менять тип данных.

Таблица преобразования типов данных

Все выражения в тексте автоматически преобразуются к строке, при отсутствии дополнительных идентификаторов. При преобразовании типа Список в Строку или Текст берутся значения списка, при преобразовании Списка в Список - ключи списка. Для получения значения ключа списка нужно использовать конвертирование, например: .

Для данных типа Пользователь также есть возможность преобразования в формат user, friendly. В таком случае будет выводиться только имя и фамилия пользователя, без его ID и логина.

Важно! Для версий модуля до 15.6.0 преобразование типов данных, в том числе и запрос печатной формы для значений, не имеющих таковой, возможно с помощью переменных и действия PHP-код. Для вставки одного и того же значения в разные действия шаблона не обязательно всегда пользоваться формой Вставка значения. Достаточно скопировать текст, вставленный с помощью этой формы, и использовать его дальше.

Если для документа было создано дополнительное поле и оно по каким-либо причинам не отображается в форме Вставка значения, то необходимо перейти к настройкам инфоблока в административной части сайта (Контент > Инфоблоки > Типы инфоблоков > [требуемый_инфоблок], закладка Свойства), и в параметрах свойств этого поля отметить опцию Выводить на странице списка элементов поле для фильтрации по этому свойству:.


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

Читайте также: