[MODX] Сниппет для вывода размера и расширения файла

Использование:

  • [[!FileSize? &input=`assets/files/myfile.zip`]] — Будет автоматически выбрана единица измерения
  • [[*file_catalog:FileSize]] — Вывод размера файла из TV-параметра
  • [[!FileSize? &input=`assets/files/myfile.zip` &unit=`b`]] — Явно указываем единицу измерения
  • [[!FileSize? &input=`assets/files/myfile.zip` &get_ext=`1`]] — Получить расширение файла, а не размер
  • [[*file_catalog:FileSize?&get_ext=`1`]] — расширение файла из TV-параметра
  • {'!FileSize' | snippet : ['input' => 'assets/files/myfile.zip']} — Fenom

Сниппет FileSize

if(!empty($get_ext)){
  //Получить расширение файла в нижнер регистре
  $ext = mb_strtolower(pathinfo($input, PATHINFO_EXTENSION));
  return $ext;
}else{
  //Получить размер файла
  $units = array(
    'gb' => array('size' => 1073741824, 'label' => 'ГБ'),
    'mb' => array('size' => 1048576,    'label' => 'МБ'),
    'kb' => array('size' => 1024,       'label' => 'КБ'),
    'b'  => array('size' => 0,          'label' => 'байт')
  );
  $input = MODX_BASE_PATH . $input;
  $size = is_file($input) ? filesize($input) : 0;
  $unit = (isset($unit) && isset($units[$unit])) ? $unit : false;
  
  if ($size > 0) {
    if ($unit === false) {
      foreach ($units as $key => $properties) {
        if ($size >= $properties['size']) {
          $unit = $key;
          break;
        }
      }
    }
    if ($unit != 'b'){
      $size = $size / $units[$unit]['size'];
    }
  }
  else {
    if ($unit === false) $unit = 'b';
  }
  return round($size, 2) . ' ' . $units[$unit]['label'];
}

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

[MODX] Генератор настроек MIGX

Документация на русском по MODX MIGX

[JS] Маска для ввода телефона +7(___)___-__-__

[MODX] Импорт и экспорт в MiniShop2. Реализация 1

jQuery.Maskedinput js - документация на русском с примерами

[MODX] Подсказки по работе и заготовки для MiniShop2

Как включить HTTPS (SSL) в MODX - Подробная инструкция

[MODx, miniShop2] Генерация YML для выгрузки в маркет

[MODX] Примеры работы с API

[OpenCart] Вывести на главную все категории с картинками

[MODX] Сайт на обслуживании (выключить сайт)

Расширение свойств товаров minishop2

[MODX, MIGX] Примеры использования

Пример перевода с помощью Yandex Translate API

Универсальная форма обратной связи — feedBackForm

[MODx, Gallery] Галерея. Вывести обложки альбомов и фотографии

[MODX, MiniShop2] Примеры выборки where, optionFilters, innerJoin

[Opencart] Вернуть английский язык, если вы его удалили

Отключить автозаполнение input

Настройка Webpack - несколько точек входа и разделение на чанки

[MODX] pThumb - ресайз изображений. Примеры использования.

[OpenCart] Вывести модуль напрямую через контроллер

[MODX, MIGX] Вывести getImageList только если он не пустой

[MODX, MIGX] Тип поля "Список ресурсов" (resourcelist) с ограничением по родителю (parents)

[MODX, Quip] Более рабочий вариант

Все записи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK