Вывести свойство файл битрикс
Фильтрация элементов инфоблока по свойству в компонентах 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. Выводит фото раздела компонента:
5. Выводит описание раздела компонента:
6. Выводит массив свойства "Файл" с описанием к ним. Для этого предварительно в свойствах "Файл" ставится галочка "Выводить поле для описания значения:"
7. Не множественное свойство "Привязка к элементу". Наш элемент имеет свойство PRICE типа "Привязка к элементам" и нам нужно вывести в нем свойство PRICE_DOWN от привязанного элемента. Для этого используем код ниже:
8. Вывести текущую директорию из файла .section.php в шаблоне сайта:
9. Условие, когда пользователь авторизован под Администратором:
10. При выводе свойства или переменной меняем занчение какого-либо символа или кода на свой код:
11. Условие, если число не делится без остатка на 4:
12. Выводим свойство, ограничивая количество символов до 13 штук:
При работе с бизнес-процессом в параметрах действий, параметрах шаблона и настройках статуса можно указывать как собственный текст, заданный вручную, так и использовать различные переменные, поля документа и прочие данные, которые не нужно задавать вручную. Для этого используется специальная форма Вставка значения:
- Параметры шаблона - вставка параметров шаблона, которые задаются для конкретного шаблона в соответствующей форме, доступной по кнопке Параметры шаблона на контекстной панели визуального конструктора бизнес-процесса. Значением параметра будет то, что введет пользователь в соответствующих полях при запуске бизнес-процесса.
- Переменные - вставка пользовательских переменных, которые могут изменяться по ходу выполнения бизнес-процесса.
Пример: дополнительное числовое поле, заполняемое пользователем в процессе выполнения бизнес-процесса. - Константы - вставка заранее заданных констант, которые остаются неизменными в процессе исполнения бизнес-процесса. Их значение задается в параметрах шаблона и пользователь, не имеющий доступа к изменению процессов не может менять их значение.
- Поля документа - вставка значения какого-либо поля документа, участвующего в бизнес-процессе.
Например: Дата создания или Кем создан. - Дополнительные результаты - вставка результатов выполнения некоторых действий. Не все действия после их выполнения предоставляют дополнительные результаты. В списке отображаются сразу все доступные результаты для всех действий, добавленных в текущий процесс, если они их поддерживают.
- Пользователи - вставка пользователя или группы пользователей, которые будут причастны к выполнению бизнес-процесса. Можно выбрать несколько пользователей/групп пользователей. Для этого в качестве разделителя используется символ ; .
- Категории пользователей - позволяет более подробно указать пользователей, которые будут причастны к выполнению бизнес-процесса. В том числе можно выбрать Отдел или Группу соцсети.
Следующие значения недоступны напрямую из формы, но могут быть использованы при проектировании шаблона бизнес-процесса:
- - идентификатор бизнес-процесса;
- - идентификатор текущего пользователя в формате user_[номер_пользователя_в_системе];
- - параметр, в котором содержится идентификатор пользователя, запустившего бизнес-процесс в формате user_[номер_пользователя_в_системе];
- - текущая дата со временем на сервере;
- - текущая дата со временем у клиента (учитывается часовой пояс);
- - текущая дата без времени;
- - позволяет получить ссылку на страницу детального просмотра документа, при условии, что в настройках инфоблока корректно заполнен URL страницы детального просмотра.
В рамках бизнес-процессов для сделок в CRM можно использовать некоторые значения из полей контакта или компании, которые связаны с этой сделкой.
Для Контактов можно использовать следующие значения:
Для Компаний можно воспользоваться следующими значениями:
Модификация типов данных
Для параметров и переменных шаблона, а так же полей документа используется модификатор printable , преобразующий значения в понятную пользователю строку.
Для переменной типа пользователь это выглядит следующим образом:
Результат, если значение переменной равно Автор :
Если для поля документа или параметра доступен такой вариант отображения, то он будет представлен в форме Вставка значения. Если же печатная форма не предусмотрена, то можно запросить вывод печатной формы от любого значения (переменная, дополнительный результат и т.п.).
Кроме того, можно преобразовывать не только в печатную форму, но и менять тип данных.
Для данных типа Пользователь также есть возможность преобразования в формат user, friendly. В таком случае будет выводиться только имя и фамилия пользователя, без его ID и логина.
Важно! Для версий модуля до 15.6.0 преобразование типов данных, в том числе и запрос печатной формы для значений, не имеющих таковой, возможно с помощью переменных и действия PHP-код. Для вставки одного и того же значения в разные действия шаблона не обязательно всегда пользоваться формой Вставка значения. Достаточно скопировать текст, вставленный с помощью этой формы, и использовать его дальше.Если для документа было создано дополнительное поле и оно по каким-либо причинам не отображается в форме Вставка значения, то необходимо перейти к настройкам инфоблока в административной части сайта (Контент > Инфоблоки > Типы инфоблоков > [требуемый_инфоблок], закладка Свойства), и в параметрах свойств этого поля отметить опцию Выводить на странице списка элементов поле для фильтрации по этому свойству:.
Если этого не сделать, то будет невозможным использовать это свойство в бизнес-процессах.
Читайте также: