Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
Ответить
RSS
Вывести множественное свойство типа файл с названием и весом файла в Битрикс
 
Вывести множественное свойство типа файл с названием и весом файла в Битрикс

В этой заметке расскажу как красиво вывести множественное свойство типа файл в инфоблоке 1С-Битрикс. С показом оригинального названия файла, его транслитированной версии, размера файла в килобайтах и, само собой, ссылкой на скачивание.
 
Спасибо. Но есть косяк. Если файл один, то не выводит.
 
Цитата
Сергей Стефанович пишет:
Спасибо. Но есть косяк. Если файл один, то не выводит.
Использую в news.list
 
Вот решение проблемы с одиночными файлами.


Код
<?if(count($arItem["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["SRC"]) == 1):?>
            <a href="<?echo $arItem["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["SRC"]?>" class="file" target="_blank" style="margin-top: 0" >
               <strong> <?echo $arItem["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["ORIGINAL_NAME"] ?>
                     <span> —
                        <?= round((intval($arItem["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["FILE_SIZE"]) / 1024), 1); ?> Кб
                     </span>
                  </strong>
                  <br>
                  <i>
                     <?echo $arItem["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["FILE_NAME"] ?>
                  </i>
            </a>

         <?else:?>
            
            <? foreach ($arItem["DISPLAY_PROPERTIES"]['FILES']['FILE_VALUE'] as $pid => $arProperty): ?>
               <a href="<? echo $arProperty['SRC']; ?>" class="file" title="Скачать <? echo $arProperty['FILE_NAME']; ?>"> 
                  <strong> <? echo $arProperty['ORIGINAL_NAME']; ?>
                     <span> —
                        <?
                           $strKb = $arProperty['FILE_SIZE']/1024;
                           echo round($strKb) . ' Кб';
                        ?>
                     </span>
                  </strong>
                  <br>
                  <i>
                     <? echo $arProperty['FILE_NAME']; ?>
                  </i>
               </a>
               <br>
            <?endforeach;?>
            
         <?endif?>
 
Изменено: Михаил Базаров - 26.01.2018 19:00:50 (По просьбе пользователя ))
 
Михаил, спасибо за отличную статью!
Сергей, спасибо за не менее важное дополнение!
Для вывода списка файлов на детальной странице комплексного компонента catalog у меня получился такой код:
Код
<?if(count($arResult["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["SRC"]) == 1):?>
    <a href="<?echo $arResult["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["SRC"]?>" class="file" target="_blank" style="margin-top: 0" >
        <strong> <?echo $arResult["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["ORIGINAL_NAME"];?>
            <span> — <?= round((intval($arResult["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["FILE_SIZE"]) / 1024), 1); ?> Кб</span>
        </strong>
        <br>
        <i><?echo $arResult["DISPLAY_PROPERTIES"]["FILES"]["FILE_VALUE"]["FILE_NAME"] ?></i>
    </a>

 <?else:?>
            
   <?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>
      <br>
    <?endforeach?>
         
<?endif;?>
 
Добрый день! А как вывести размер файла свойства типа "привязка к файлу на сервере"?
 
Чтобы он распознавал тип и выводил соответствующую картинку. Типы можно любые указать.
Код
<?if($arResult["DISPLAY_PROPERTIES"]["file"]["VALUE"]):?>
<?if(count($arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["SRC"]) == 1):?>
<a href="<?echo $arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["SRC"]?>" title="<?=round((intval($arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["FILE_SIZE"])/1024),1);?> Кб"><table>
<?$f=$arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["SRC"];$p=pathinfo($f);$pdf=array($p['extension']);if(in_array('pdf',$pdf)):?><tr><td><img align="left" src="/images/icons/pdf.png" width="24px"><?echo $arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["ORIGINAL_NAME"]?></td></tr><?else:?><?endif;?>
<?$f=$arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["SRC"];$p=pathinfo($f);$doc=array($p['extension']);if(in_array('doc',$doc)):?><tr><td><img align="left" src="/images/icons/doc.png" width="24px"><?echo $arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"]["ORIGINAL_NAME"]?></td></tr><?else:?><?endif;?>
</table></a>
<?else:?><?foreach($arResult["DISPLAY_PROPERTIES"]["file"]["FILE_VALUE"] as $pid=>$arProperty):?>
<a href="<?echo $arProperty['SRC'];?>" title="<?$strKb = $arProperty['FILE_SIZE']/1024; echo round($strKb).' Кб';?>"><table>
<?$f=$arProperty['SRC'];$p=pathinfo($f);$pdf=array($p['extension']);if(in_array('pdf',$pdf)):?><tr><td><img align="left" src="/images/icons/pdf.png" width="24px"><?echo $arProperty['ORIGINAL_NAME'];?></td></tr><?else:?><?endif;?>
<?$f=$arProperty['SRC'];$p=pathinfo($f);$doc=array($p['extension']);if(in_array('doc',$doc)):?><tr><td><img align="left" src="/images/icons/doc.png" width="24px"><?echo $arProperty['ORIGINAL_NAME'];?></td></tr><?else:?><?endif;?></table></a>
<?endforeach?><?endif?><?else:?>Нет файла<?endif;?>
 
Для new.list меняете arResult на arItem. Также можно добавить fancybox, тогда jpg и pdf будут в виде сплывающего окна.
 
есть еще такой способ выводить файл:
Код
<?$file_path = CFile::GetPath($arResult['DISPLAY_PROPERTIES']['file']['VALUE']);?>
<a href="<?=$file_path?>"><?=$file_path?></a>
(<?$file_s1 = CFile::GetByID($arResult["DISPLAY_PROPERTIES"]["file"]["VALUE"]);
$file_s2 = $file_s1->Fetch();
echo CFile::FormatSize ($file_s2['FILE_SIZE']);?>)
 
На детальной странице каталога не получается вывести.
Компонент bitrix.catalog.element

Подскажите что не так?
 
Тоже столкнулся с проблемой. catalog.element не видит в массиве SRC попросту не видит, видит размер и название файла причем через $arResult["PROPERTIES"]["FILES"]["VALUE"]

с
$arResult["DISPLAY_PROPERTIES"]["file"]["VALUE"] вообще отдает NULL
 
Здравствуйте.
У меня почему  в цикле foreach не чего не происходит, совсем, хотя свойства передаются и файл прикреплен.

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


Пытаюсь вывести файл в каталоге для скачивания.
Каталог не основной.  
 
Такая же история, абсолютно не рабочий код. Пытаюсь вывести в catalog.element, никакой реакции системы нет. 1С-Битрикс: Управление сайтом 20.200.0.
 
Цитата
Eugene Eugene написал:
Такая же история, абсолютно не рабочий код. Пытаюсь вывести в catalog.element, никакой реакции системы нет.  1С-Битрикс: Управление сайтом 20.200.0 .
Распечатайте массив, есть ли хотя бы какое-то упоминание о файлах?
Только что проверил на одном проекте - все работает
Код
echo '<pre>';
print_r($arResult["DISPLAY_PROPERTIES"]);
echo '</pre>';
Изменено: Михаил Базаров - 23.11.2020 08:32:46
 
Добрый день. У меня то же не работает (news.detail) Выдаёт следующее: 1111При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php
 
Цитата
Eugene Eugene пишет:
Такая же история, абсолютно не рабочий код. Пытаюсь вывести в catalog.element, никакой реакции системы нет.  [URL=http://www.1c-bitrix.ru/]1С-Битрикс: Управление сайтом 20.200.0[/URL] .
Присоединяюсь. Есть решение для (news.detail)?  
 
Цитата
виталий бовкун написал:
Здравствуйте.
У меня почему  в цикле foreach не чего не происходит, совсем, хотя свойства передаются и файл прикреплен.

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


Пытаюсь вывести файл в каталоге для скачивания.
Каталог не основной.  
Скажите, а нашлось решение проблемы. Очень надо.
 
Цитата
Денис Кулеба пишет:
[QUOTE][URL=/club/user/13838/]виталий бовкун[/URL] написал:
Здравствуйте.
У меня почему  в цикле foreach не чего не происходит, совсем, хотя свойства передаются и файл прикреплен.

$arProperty):?>
echo $arProperty['FILE_SIZE']; //размер файла в байтах
echo $arProperty['FILE_NAME']; //Транслитированное название файла
echo $arProperty['ORIGINAL_NAME']; //Оригинальное название файла
echo $arProperty['SRC']; //Ссылка на скачивание
?>



Пытаюсь вывести файл в каталоге для скачивания.
Каталог не основной.  [/QUOTE] Скажите, а нашлось решение проблемы. Очень надо.
Самый последний абзац- добавлен недели 2-е назад.
 
Цитата
Михаил Базаров пишет:
[QUOTE][URL=/club/user/14132/]Денис Кулеба[/URL] пишет:
[QUOTE][URL=/club/user/13838/]виталий бовкун[/URL] написал:
Здравствуйте.
У меня почему  в цикле foreach не чего не происходит, совсем, хотя свойства передаются и файл прикреплен.

$arProperty):?>
echo $arProperty['FILE_SIZE']; //размер файла в байтах
echo $arProperty['FILE_NAME']; //Транслитированное название файла
echo $arProperty['ORIGINAL_NAME']; //Оригинальное название файла
echo $arProperty['SRC']; //Ссылка на скачивание
?>



Пытаюсь вывести файл в каталоге для скачивания.
Каталог не основной.  [/QUOTE] Скажите, а нашлось решение проблемы. Очень надо.[/QUOTE] Самый последний абзац- добавлен недели 2-е назад.
Простите. Не очень понял ответ. Что делать то надо? Можно просто код для вставки? Я не программист, пытаюсь сам до всего докапаться.
 
Спасибо разобрался.
 
Вывести дату создания файла в формате сайта

Что бы это сделать можно воспользоваться методом
CFile::GetFileArray

В параметр передаем ID нужного файла или переменную с нужным ID и классом DateTime
приводим к строке:
Код
<?
$arItem = 123; // ID нужного файла
$rsFile = CFile::GetFileArray($arItem);
echo $rsFile['TIMESTAMP_X']->toString();
?>
Если нужна вся информация о конкретном файле (вес, формат, путь на сервере, описание итд)
Распечатываем массив
Код
<?
print_r($rsFile);
?>
Ответить
Форма ответов
 
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить файлы
 
Заметки разработчика

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

Заказaть разработку attention