Как вывести множественное свойство файл битрикс
И снова свойства, но уже разделов.
Очень часто, делая каталог на 1С-Битриксе, требуется задать свойства и разделам, не только элементам. В стандартном функционале у нас есть только изображение и описание.
Чтобы вывести изображение раздела, нужно в шаблоне catalog.section прописать следующий код:
Код <?php if ($arResult["PICTURE"]["SRC"]) <a onclick="return hs.expand(this)" title="<?=$arResult["NAME"]?>" href="<?=$arResult["PICTURE"]["SRC"]?>"><img style="width:300px" src="https://devfix.ru/web_studio/blogs/513/<?=$arResult["PICTURE"]["SRC"]?>" title="<?=$arResult["NAME"]?>" />
<?php > else < ?><?php >?>?>>
Чтобы было яснее, у меня идет сначала проверка, есть ли фотография, а потом идет вывод фотографии, там class и onclick - это остатки от галереи, не обращайте на них внимания. Если фотографии нет, то ничего и не выводится.
Чтобы вывести описание раздела, в шаблоне catalog.section прописываем код:
Или для раздела news.list, если параметр выдается в виде массива Array:
Код <?foreach($arResult["SECTION"]["PATH"] as $arSection):?><?=$arSection["DESCRIPTION"]?>
<?endforeach;?>
Теперь самая соль.
Чтобы задать дополнительное свойство раздела, нужно использовать Пользовательские поля.
Заходим в свойства раздела, выбираем вкладку "Доп. свойства" и нажимаем на "Добавить пользовательское поле".
Создаете нужное поле требуемого типа и сохраняете. Потом в Свойствах раздела вы заполняете ваше созданное свойство раздела.
Теперь, самое главное, чтобы вывести свойство раздела (пользовательское поле) нужно, всё в том же шаблоне catalog.section прописать следующий код:
Для НЕ МНОЖЕСТВЕННОГО свойства раздела (пользовательского поля):
Код <?$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arResult["IBLOCK_ID"], "ID"=>$arResult["ID"]), true,$arSelect=Array("UF_DOC"));
while($ar_result = $db_list->GetNext()):
?>
<?=CFile::GetPath($ar_result["UF_DOC"]); ?>
<?endwhile?>
Для МНОЖЕСТВЕННОГО свойства раздела (пользовательского поля):
Код <?$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arResult["IBLOCK_ID"], "ID"=>$arResult["ID"]), true,$arSelect=Array("UF_FILE"));
while($ar_result = $db_list->GetNext()):
?>
<?foreach($ar_result["UF_FILE"] as $PHOTO):?>
<?=CFile::GetPath($PHOTO); ?>
<?endforeach?>
<?endwhile?>
В данном случае код используется CFile::GetPath, чтобы вывести ссылку на файл, дальше обработать ее, думаю, не составит труда.
Таким образом для значения типа данных "Файл" используем:
а, чтобы вывести текстовое значение поля типа данных "Строка":
Для вывода пользовательского поля в шаблоне catalog.section.list я использовал следующий кода:
Код <?$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arSection["IBLOCK_ID"], "ID"=>$arSection["ID"]), true,$arSelect=Array("UF_ACT"));
while($ar_result = $db_list->GetNext()):
?>
<? if ($ar_result["UF_ACT"]):?>
<font color="red">Акция!</font>
<? endif ?>
<?endwhile?>
Для этого испольузуется следующий код:
<!-- Код отвечет вывод пользовательского свойства типа "Привязка к элементам инф.блока" в разделе инфоблока и размещенн в template.php, который лежит в шаблоне catalog.section.list -->
<?
//Сначала мы получаем ID привязанных элементов к нашему разделу по нужному нам свойству UF_NOV (можно написать UF_*, тогда будут получены все свойства вида UF_), т.е. ID инфоблока, у которого в разделе выводим свойство равен 3. Т.к. значение множественное, то его выводим циклом. Там еще стоит условие, что если заначения нашего свойства пустое, но чтобы ничего не выводил
$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => "3", 'ID' => $arResult["SECTION"]["ID"]), true, Array("UF_NOV"));
while ($arResult = $rsResult -> GetNext())
if (!empty($arResult["UF_NOV"])) // условие, что пустые занчения не выводим
$iter = $arResult["UF_NOV"]; //получили наши ID элементов из ИБ id 8, которые привязаны к разделу ИБ id 3
>
>
//Здесь мы начинаем выводить элементы другого инфоблока с ID 8, к которым привязан наш раздел свойством UF_NOV
$arFilter = array('IBLOCK_ID' => 8,'ID' => $iter);//задаем в фильтр чтобы выводил тольк из ИБ id 8 и только нужные нам элемены по ID, которые мы получили выше
$rsItems = CIBlockElement::GetList(array(),$arFilter);
while ($arItem = $rsItems->GetNext())
if (!empty($iter)) // условие, что пустые занчения не выводим
$resizer = $arItem['PREVIEW_PICTURE']; //функция ресайза картинки, если нужно
$file = CFile::ResizeImageGet($resizer, array('width'=>1000, 'height'=>290), BX_RESIZE_IMAGE_PROPORTIONAL , true); //функция ресайза картинки, если нужно
$img = $file['src']; //функция ресайза картинки, если нужно
echo '<img src="'.$img.'" /><br><a href="'.$arItem["DETAIL_PAGE_URL"].'">'.$arItem["NAME"].'</a>';
>
>
?>
Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.
Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .
Курс для разработчиков - продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.
Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:
- Интерфейс программы - в главе Элементы управления курса Контент-менеджер.
- Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
- Информационные блоки - в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
- Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
- Работа с инструментами системы - в главе Работа с инструментами курса Администратор. Базовый.
- Модуль Поиск - в главе Поиск курса Администратор. Базовый.
- Вся информация по администрированию модулей размещена в курсах:
-
- модули "1С-Битрикс: Управление сайтом" - модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. - модули "1С-Битрикс: Корпоративный портал"
Как построен курс
Общепринятая градация квалификации разработчиков в рамках курса обозначает что:
- Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
- Middle разработчик может работать с API Bitrix Framework.
- Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
Начальные требования к подготовке
Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):
- основами PHP, баз данных;
- основами HTML, CSS.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Тесты
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Комментарии к статьям
Что дальше?
Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:
Для преподавания оффлайн
Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).
Если нет интернета
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.
Как красиво вывести множественное свойство типа файл в инфоблоке 1С-Битрикс. С показом оригинального названия файла, его транслитированной версии, размера файла в килобайтах и, само собой, ссылкой на скачивание.
Исходные данные для вывода файлов
Итак, в инфоблоке каталога сайта имеем стандартное, множественное свойство "типа файл" с кодом "FILES".
Если мы его выведем, штатным способом, через вывод свойств- как оно задумано в Битрикс изначально. Выглядеть это будет не казисто и не интересно
Абсолютно не интересно и самое главное не информативно. В моем случае, в данное свойство загружаются документы. Причем они в разных форматах и разного размера. Пользователь должен видеть и название документа и его размер с форматом. Например вот так:
Выводим свойство файл через API Битрикс- получая все данные о файлах
Все достаточно просто, так как множественные свойства это обычные массивы. Мы можем получить все данные о каждом файле, просто зная код свойства, в моем случае "FILES". Выглядеть foreach будет следующим образом.
Расскоментировав строку
// echo '<pre>';print_r($arProperty);echo '</pre>';
Вы сможете увидеть все данные о каждом файле, доступные для вывода. По мимо основных, там есть и дата загрузки и тип файла.
В принципе и все. Конкретно в моем случае, в примере выше, результат вывода выглядет следующим образом:
Несколько полезных моментов
Байты в килобаты (размер файла), я привратил, обычной php функцией округления в большую сторону round. Предварительно приведя байты в килобаты. просто разделив $arProperty['FILE_SIZE'] на 1024 (смотри в коде выше).
Иконки для разных типов файлов, назначил через CSS - тут простая стилизация. Зная расширение файла, а точнее расширенеие на которое заканчивается ссылка, просто прописал background для каждой разновидности ссылки. Вот так:
Читайте также: