Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Вывести множественное свойство типа файл с названием и весом файла в Битрикс

Просмотров: 33967
В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1С-Битрикс. С показом оригинального названия файла, его транслитированной версии, размера файла в килобайтах и, само собой, ссылкой на скачивание.

Исходные данные для вывода файлов

Итак, в инфоблоке каталога сайта имеем стандартное, множественное свойство "типа файл" с кодом "FILES".

Свойство файл битрикс

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

Свойство файл битрикс

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

Свойство файл битрикс

Выводим свойство файл через API Битрикс- получая все данные о файлах

Все достаточно просто, так как множественные свойства это обычные массивы. Мы можем получить все данные о каждом файле, просто зная код свойства, в моем случае "FILES". Выглядеть foreach будет следующим образом.

<?foreach($arResult["DISPLAY_PROPERTIES"]['FILES']['FILE_VALUE'] as $pid=>$arProperty):?>
    <?
    //echo '<pre>';print_r($arProperty);echo '</pre>';
    echo $arProperty['FILE_SIZE']; //размер файла в байтах
    echo $arProperty['FILE_NAME']; //Транслитированное название файла
    echo $arProperty['ORIGINAL_NAME']; //Оригинальное название файла
    echo $arProperty['SRC']; //Ссылка на скачивание
    >
<?endforeach?>

Расскоментировав строку
// echo '<pre>';print_r($arProperty);echo '</pre>';
Вы сможете увидеть все данные о каждом файле, доступные для вывода. По мимо основных, там есть и дата загрузки и тип файла.

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

<? foreach ($arResult["DISPLAY_PROPERTIES"]['FILES']['FILE_VALUE'] as $pid => $arProperty): ?>
    <a
    href="<? echo $arProperty['SRC']; ?>"
    title="Скачать <? echo $arProperty['FILE_NAME']; ?>">
        <strong>
            <? echo $arProperty['ORIGINAL_NAME']; ?>
            <span> —
                <?
                $strKb = $arProperty['FILE_SIZE']/1024;
                echo round($strKb) . ' Кб';
                ?>
            </span>
        </strong>
        <i>
            <? echo $arProperty['FILE_NAME']; ?>
        </i>
    </a>
<? endforeach ?>

Несколько полезных моментов

Байты в килобаты (размер файла), я привратил, обычной 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
Услуги

Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

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

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс