Вывод свойства типа файл в 1С Битрикс
При разработке сайта на 1С Битрикс работая с компонентом «Элементы раздела» вывести кастомное свойство инфоблока типа «Файл» из массива [DISPLAY_PROPERTIES] не возможно.
Например, в bitrix:news можно получить свойство типа файл и доступ к пути в [DISPLAY_PROPERTIES][PHOTOS][FILE_VALUE][$elem][SRC] , чтобы вывести галерею. При работе с компонентом bitrix:catalog.section в [DISPLAY_PROPERTIES] уже не существует подмассива [PHOTOS] , однако он существует в [PROPERTIES] , но там не прописаны пути к файлам. По этому самый простой способ получить путь через метод CFile::GetPath( $arResult[‘ITEMS’][$key][‘PROPERTIES’][‘PHOTOS’][‘VALUE’][$img]) , который получает ID и на основе этого ищет путь к файлу.
*[PHOTOS] — имя свойства инфоблока типа «Файл».
Вывести множественное свойство типа файл с названием и весом файла в Битрикс
В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1С-Битрикс. С показом оригинального названия файла, его транслитированной версии, размера файла в килобайтах и, само собой, ссылкой на скачивание.
Исходные данные для вывода файлов
Итак, в инфоблоке каталога сайта имеем стандартное, множественное свойство «типа файл» с кодом «FILES».

Если мы его выведем, штатным способом, через вывод свойств- как оно задумано в Битрикс изначально. Выглядеть это будет не казисто и не интересно

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

Выводим свойство файл через API Битрикс- получая все данные о файлах
Все достаточно просто, так как множественные свойства это обычные массивы. Мы можем получить все данные о каждом файле, просто зная код свойства, в моем случае «FILES». Выглядеть foreach будет следующим образом.
$arProperty):?> ';print_r($arProperty);echo '
‘; echo $arProperty[‘FILE_SIZE’]; //размер файла в байтах echo $arProperty[‘FILE_NAME’]; //Транслитированное название файла echo $arProperty[‘ORIGINAL_NAME’]; //Оригинальное название файла echo $arProperty[‘SRC’]; //Ссылка на скачивание >
Расскоментировав строку
// echo ‘
';print_r($arProperty);echo '
‘;
Вы сможете увидеть все данные о каждом файле, доступные для вывода. По мимо основных, там есть и дата загрузки и тип файла.
В принципе и все. Конкретно в моем случае, в примере выше, результат вывода выглядет следующим образом:
$arProperty): ?> " title="Скачать "> —
Несколько полезных моментов
Байты в килобаты (размер файла), я привратил, обычной php функцией округления в большую сторону round. Предварительно приведя байты в килобаты. просто разделив $arProperty[‘FILE_SIZE’] на 1024 (смотри в коде выше).
Иконки для разных типов файлов, назначил через CSS — тут простая стилизация. Зная расширение файла, а точнее расширенеие на которое заканчивается ссылка, просто прописал background для каждой разновидности ссылки. Вот так:
a[href$=".doc"], a[href$=".docx"], a[href$=".rtf"] < background: url("img/doc.png"); >a[href$=".pdf"] < background: url("img/pdf.png"); >a[href$=".xls"], a[href$=".xlsx"] < background: url("img/exl.png"); >
Дополнено: вывод файла для catalog.element
Так как в компоненте и шаблоне catalog.element доступна информация, только для ID файла — те же самые данные (из текста выше), мы можем получить методом CFile::GetFileArray(). Просто передав в него ID файла.
foreach ($arResult["PROPERTIES"]['FILES']['VALUE'] as $pid => $arProperty): $arFile = CFile::GetFileArray($arProperty); print_r($arFile);// Распечатка всего массива endforeach
Форум
Всем привет. Каким образом можно вывести свойство типа «файл» элемента?
Сообщений: 4830 Баллов: 956 Регистрация: 24.11.2005
31.01.2012 13:33:03
«Да не могут же они!»
Постоянный посетитель
Сообщений: 147 Баллов: 11 Регистрация: 29.12.2011
03.02.2012 09:02:05
Спасибо. Помогло:)
Страницы: 1
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Вывести свойства инфоблока по отдельности
Если у инфоблока несколько свойств, то при выводе их всех, скажем в детальном описании новости, они выводятся все вместе- списком. Но можно вывести их независимо друг от друга. Для этого достаточно в шаблоне bitrix:news.detail вписать
Где:
DISPLAY_PROPERTIES — название свойства
ATTRIBUTE — код свойства Чтобы вывести и название и значение свойства есть вариант:
//если не пустое
//вывести название
//и значение
?>?>
Чтобы вывести ссылку:
Чтобы вывести свойство типа строка в режиме html:
Что бы вевести свойство типа html/text:
Свойство список в виде select
Множественное свойство типа список:
Вывести список связанных элементов со свойством привязка к элементам в виде списка
Вывести свойство файл-изображение как изображение а не ссылку на загрузку:
Свойство типа файл с ссылкой на загрузку файла
Вывести колличество комментариев к элементу в списке новостей битрикс:
=(strlen($arItem["PROPERTIES"]["FORUM_MESSAGE_CNT"]["VALUE"]) >0 ? $arItem[«PROPERTIES»][«FORUM_MESSAGE_CNT»][«VALUE»] : «0»);?>
Немного не в тему но может пригодиться: вывести колличество просмотров элемента инфоблока (с новостями точно работает):
К парметру вывода компанента добавить:
«LIST_FIELD_CODE» => array(0=>»SHOW_COUNTER»,1=>»»,),
«DETAIL_FIELD_CODE» => array(0=>»SHOW_COUNTER»,1=>»»,),
В нужном месте шаблона вставить
— для списка новостей
— для детальной новости
Немного костыльный, но однако способ: как вывести ссылку на детальный просмотр и изображение связанного элемента каталога. Для примера, имеем инфоблок с товарами и инфоблок с брендами. Нужно на странице бренда вывести все связанные элементы с ссылкой на детальный просмотр и картинку товара.
//это картинка превью товара
$res = CIBlockElement::GetByID($arElement[«ID»]);
if($ar_res = $res->GetNext())
echo CFile::ShowImage($ar_res[‘PREVIEW_PICTURE’], 200, 200, «border=0», «», true);
?>
Свойство привязка к Google карте
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
);?>
