CONTENT MANAGEMENT SYSTEM
Blox Logo
Blox CMS — блочный метод сайтостроения
.
 
Blox Help

←→

Данные типа file

Данные типа file - это любые файлы: картинки, аудио и видео файлы, дистрибутивы программ, документы, в том числе html-документы. Как они используются на страничке (отображаются, проигрываются или скачиваются) задается в шаблоне. В дескрипторе же просто задется тип - file, а пользователь просто закачивает файл на сайт.

Приведем пример шаблона, с помощью которого пользователь может закачивать файлы на сервер, а посетитель скачивать их:

file.tpl

<?php echo "

    {$dat['edit']}
    <a href='dataFiles/$dat[1]'>Скачать файл: $dat[1]</a>

";?>

file.tdd

<?php

    $types[1]='file';

?>

Значением file-данного является имя файла. Файлы закачиваются из окна редактирования и автоматически помещаются в папку ./dataFiles на сервере. Если в этой папке уже имеются файлы с таким же именем, то к имени файла приписывается последовательный номер. Таким образом, имя файла пользователем непосредственно не редактируется.

Параметры, применяемые для всех типов файлов

  Имя параметра  Назначение параметраЗначения (аргументы) параметраПримечания
allowedFormatsФорматы (типы) файлов, разрешенные для закачки Перечень расширений имен файлов, через запятую.

allowedFormats(gif,png) forbiddenFormats(exe)

forbiddenFormatsФорматы (типы) файлов, запрещенные для закачки
nameFieldПереименовать закачанный файл, используя в качестве имени текст из указанного поля.Номер поля-источника.

Необязательный второй аргумент — ограничение на максимальную длину имени (число символов)

nameField(1,300)

  • Этот параметр желательно применять для поискового продвижения.
  • Этот параметр не будет действовать, если для данного задан параметр sourceField.
  • Можно для нескольких file-данных задать одно и то же поле в качестве источника имени — накладок не будет, так как к имени файла будет приписан числовой суффикс.
destinationАльтернативная папка назначения для закачиваемых файловПуть относительно корневой папки сайта.

destination
('dataFiles/catalog')

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

Пример:

.tdd

<?php
$types[4] = "file allowedFormats('zip','rar','arj') destination('dataFiles/archive')";
$types[5] = "file forbiddenFormats('exe','com')";
?>

Параметры, применяемые только для файлов-изображений

  Имя параметра  Назначение параметраЗначения (аргументы) параметраПримечания
maxWidthМаксимальная ширина изображенияЦелое положительное число (пиксель).

maxWidth(800) maxHeight(800)

  • Преобразование к новому размеру произойдет автоматически во время закачки
  • Если вам нужны точные значения ширины и высоты, то задавайте их в атрибутах width и height элемента img в шаблоне. Однако это может привести к непропорциональной деформации изображения.
  • Параметр thumbnail отменяет действие параметров maxWidth и maxHeight.
maxHeightМаксимальная высота изображения
thumbnailСоздание миниатюры изображенияОдно или два целых положительных числа (пиксель).

thumbnail(160)
thumbnail(160,120)

  • Приводит изображение к заданным габаритам путем подгонки и отсечения лишних областей
  • Если не указывать второй аргумент, то он по умолчанию будет равен первому аргументу, то есть, получается квадратное изображение.
newFormatПреобразовать файл к новому формату (типу)Одно из слов: gif, jpg, png.

newFormat(jpg)

widthFieldНомер поля, в которое автоматически будет записываться значение ширины закачанного изображенияЦелое положительное число (номер поля).

widthField(3) heightField(4)

  • Эти параметры можно применять в элементе img для атрибутов width и height, так как их указание ускоряет отображение страницы.
  • Эти параметры полезны при показе изображения в новом окне с помощью JavaScript функции window.open, так как они позволяют задать размер нового окна, равный размеру изображения.
  • Размеры изображения редактировать не рекомендуется, поэтому указанные поля лучше сделать скрытыми.

Размеры изображения можно не хранить, а узнать их прямо в шаблоне с помощью php-функции getimagesize(). Это избавит нас от необходимости заводить дополнительные поля в базе данных, но замедлит вывод страницы.

Размеры изображения можно узнать и на стороне клиента, взяв с помощью JavaScript стандартные свойства width и height у DOM-объекта img. Однако, изображение при этом должно быть уже загруженным на страницу.

heightFieldНомер поля, в которое автоматически будет записываться значение высоты закачанного изображения
qualityКачество изображенияПоложительное число от 0 до 100 (проценты).

quality(50)

  • Пока применяется только для формата jpg и только в том случае, если задано преобразование изображения (размера или формата).
  • По умолчанию установлено значение 50%, что дает удовлетворительное качество. Для практических целей достаточно увеличивать значение показателя качества до 80%, далее вес файла растет резко по экспоненте. Когда нужно очень хорошее качество, ставьте 90%.
sourceFieldВ качестве источника будет использоваться файл, который находится в поле, номер которого записан в этот параметр.Целое положительное число (номер поля источника).

sourceField(1)

  • Тип данных файла-источника в дескрипторе должен быть объявлен выше, чем тип текущего файла ($types[]=...)
  • Параметр действует, если непосредсвенно в текущее поле файл не закачивается.
  • Этот параметр обычно используется для автоматического создания миниатюрного варианта изображения
  • Так как закачка файла происходит автоматически, то данное поле рекомендуется делать скрытым.
stampШтамп
(водяной знак, watermark)
URL изображения.

stamp
('templates/stamp.png')

  • Все настройки для штампа (место, размер, отступы) будут доступны в окне редактирования записи.
  • Настройки штампа можно делать в дескрипторе, а не только в окне редактирования.
  • Для создания полупрозрачности или прозрачного фона используйте формат .png (лучше 24-битный, чем 8-битный)

Пример:

.tdd


<?php
$types[1] = 'file widthField(2)';
$types[2] = 'int(4)';
$types[3] = 'file maxWidth(100) maxHeight(100) sourceField(1)';
$types[6] = "file stamp('templates/stamp.png')";

# Поле 3 можно скрыть 
$params['hiddenFields'] = array(3);
?>

Закачанный файл будет подвергается преобразованию согласно параметров и сохраняется на сервере в папке dataFiles. Изображения рекомендуется преобразовывать к формату .gif, .jpg или .png.


Ниже приводятся нетривиальные примеры использования file-данных:

См. также