CMS.Fields.Types: Стандартные типы полей

Модуль CMS.Fields содержит множество реализованных типов полей, как совсем простых, так и достаточно сложных.

Все они располагаются в CMS.Fields.Types.*, соответствующие шаблоны в views/fields, css и js файлы в files/styles/fields, files/scripts/fields.

Рассмотим реализованные на данный момент поля от простого к сложному.

Для всех типов полей

Опции доступные для всех типов полей:

  • multilang включает многоязычность
  • layout обрамления для поля
  • template можно подменить шаблон, задав здесь путь
  • type тип поля
  • tagparms массив параметров для тега, таких как style
  • preprocess можно указать callback для дополнительной обработки перед выводом поля (см. CMS.Fields: создание произвольного типа поля)
  • layout preprocess можно указать callback для дополнительной обработки перед выводом обрамления (см. CMS.Fields: создание произвольного типа поля)
  • caption заголовок поля
  • rcaption заголовок, который выводится справа от поля
  • attach массив прикрепленных файлов js и css
    • js массив подключаемых js файлов
    • css массив подключаемых css файлов
  • container возможность задать свой контейнер

Переопределение имени закачиваемого файла

У полей, которые предполагают закачивание каких-либо файлов (например, documents, gallery и т.д.) имя закачиваемого файла формируется по умолчанию следующим образом: пробелы заменяются на «-», русские буквы транслитерируются. А, например, у полей documetns, gallery к имени добавляется текущее время.

Если по каким-то причинам формируемое имя по умолчанию не подходит, то необходимо воспользоваться опцией для поля:

  • uploaded_filename - значением этого параметра будет callback функция, которая будет конвертировать имя загружаемого файла. На вход этой функции можно передать либо имя файла, либо другие параметры.
...
	$fields['3d'] = array(
        	'caption' => 'Изображения для 3D',
            	'tab' => 'common',
            	'type' => 'gallery',
            	'uploaded_filename' => function($name) {
                	return strtoupper($name); //возвращаем имя в нужной форме
            	},
        );
...

Получение значения поля, поддерживающего многоязычность

1. Для текущего языка применяется метод lang().

$item->field('content')->lang()->value()

2. Если нужно получить значение поля для конкретного языка, то в метод lang() необходимо передать код языка.

$item->field('content')->lang('en')->value()

3. Или можно воспользоваться методом multilang_value() и в него передать код языка.

$item->field('content')->multilang_value('en')

input

Самый простой тип. Редактирование ведется в теге "input type="text"". Настройка внешнего вида производится путем установки параметра "tagparms":

  'tagparms' => array('style' => 'width:500px;')

Так же как и раньше, можно напрямую указать style, но такой вариант не предпочтителен:

  'style' => 'width:500px;'

Поддерживает многоязычность, для её активации нужно указать параметр

  'multilang' => true

После чего появятся табы для различных языков, обработка происходит с помощью CMS::lang.

На данный момент эта возможность доступна только для простых полей.

textarea

Текстовое поле, редактируемое в теге "textarea". Доступны стандартные настройки tagparms, style и т.д. По умолчанию

 'style' => 'width: 300px;height:100px;'

Кроме этого, существует возможность обработать значение поля перед выводом. Для этого необходимо в опции value_processors указать код обработчика или массив кодов, или пустой массив для отключения обработчиков по умолчанию. По умолчанию используется обработчик nl2br.

public function fields()
{
    return array(
        ...
        'announce' => array(
	'type' => 'textarea',
	'value_processors' => 'translit',
         ...
	),
}

Для обработки текста здесь используется модуль Text.Process. На основе этого модуля можно описать свой обработчик и применить его к полю.

Обрабатывать текст можно непосредственно перед выводом контейнера поля в шаблоне. Для этого применяется метод set_value_processors($processors).

$item->field('announce')->set_value_processors('translit')->render()

content

Текстовая область с визуальным редактором. Здесь также можно применять настройку обработки текста (value_processors) как и для поля textarea. По умолчанию для поля применяется обработчик htmlpurifier.

checkbox

Флаговая кнопка вида <input type="checkbox"> для значений типа 0,1.

checkboxes

Выводит ряд флаговых кнопок. Необходимо задать список в параметре items.

select

Комбобокс для выбора элемента из списка, строит обычный <select>. Список также передается в параметре items в формате CMS::items_for_select и является обязательным.

'chapter' => array(
    	'type' => 'select',
    	'items' => array(
       		1 => 'Огурцы',
       		2 => 'Помидоры',
       		3 => 'Яблоки',
),

radio

<input type="radio"> для выбора одного значения из списка. Список передается в параметре items в формате CMS::items_for_select и является обязательным. По реализации ничем не отличается от select, только шаблоном вывода.

'chapter' => array(
    	'type' => 'radio',
    	'items' => array(
       		1 => 'Огурцы',
       		2 => 'Помидоры',
       		3 => 'Яблоки',
),

datestr

Поле в виде строки для ввода даты. Дата вводится в формате: дд.мм.гг.

sqldate

Поля для ввода даты. Строит три тега <select> для выбора дня месяца и года. Доп. параметров нет.

sqldatestr

Поле для ввода даты. Дата вводится в виде строки в <input type="text" />. Выбор даты может осуществляться с помощью календаря.

Имеются дополнительные параметры:

  • valid1970 если установлено, то 01.01.1970 считается валидной датой
  • format формат строкового представления даты в виде "d.m.Y H:i:s". По умолчанию d.m.Y
  • with_time если не установлен параметр format, то к значению по умолчанию добавляется время
  • with_seconds если не установлен параметр format, то к значению по умолчанию добавляются секунды
  • datepicker если указан то подгружается datepicker.js для выбора даты из календаря.

email

На данный момент тоже самое что и input, только в списке показывается как <a href="mailto:value">value</a>.

hidden

Скрытое поле, выводится как <input type="hidden" />.

subheader

Вспомогательный текстовый разделитель. Если нужно разбить форму на несколько блоков по вертикали, то можно использовать subheader. Его caption будет выведен как подзаголовок.

'mycoolsubheader' => array(
     'type' => 'subheader',
     'caption' => 'Мой подзаголовок',
)

multilink

Список чекбоксов для администрирования множественных связей.

Список передается в параметре items в формате CMS::items_for_select и является обязательным.

relations

Список чекбоксов для администрирования множественных связей. Список также передается в параметре items. Тип может быть применен только при использовании СУБД MySQL.

static_multilink

Если требуется создать множественный выбор каких-либо опций, однако при этом множественная связь между таблицами представляется излишней, то в этом случае можно ограничиться простым стоковым полем в БД, в котором будет храниться информация в виде: 1, 2, 3.

Т.е. через запятую перечисляются идентификаторы выбранных опций. Для этого служит поле типа static_multilink:

'options' => array(
	'type' => 'static_multilink',
     	'items' => array(
        	1 => 'Один',
	        2 => 'Два',
        	3 => 'Три',
        	4 => 'Четыре',
        	5 => 'Пять',
     	)
),

upload

Поле для закачивания файлов. Выводится в виде <input type="file" />.

Также есть возможность удалить/скачать файл.

В списке выводится в виде ссылки для скачки.

Возможны следующие опции:

  • private если установлен, то подразумевается, что загружаемый файл приватный
  • dir директория куда будут сохраняться файлы; если не указана, то берется homedir или private_homedir у соответствующего Entity
  • subdir вложенная директория, куда будет сохранен загружаемый файл
  • filename задает формат имени загружаемого файла. По умолчанию '%{field}-%{id}-%{time}%{dotext}'. В этот шаблон могут входить следующие параметры:
    • %{field} имя поля
    • %{id} id текущего Entity
    • %{time} текущее время
    • %{ext} расширение файла
    • %{dotext} расширение файла вместе с точкой
    • %{name} имя файла
    • %{namewe} имя файла без расширения

parms

Это поле аналогично textarea, но предназначенное для хранения и редактирования сериализованных массивов, аналогично тому что вводится в настройках навигации. Для этого поля желательно выделить отдельный таб, указав его в настройках

  'parms' => array(
    'caption' => 'Parms',
    'type' => 'parms',
    'parse_to' => 'parms_array',
    'tab' => 'parms'
  )

Параметр parse_to указывает имя, по которому в объект Entity будет записан распарсеный массив.

Т.е. в примере после сохранения в $entity->parms будут оригинальные данные из textarea, а в

$entity->parms_array будет распарсенный массив (обычно это поле сериализует для записи в БД).

html

Это HTML-редактор TinyMCE. Возможно добавится поддержка других редакторов. Опции

  • widget указывает какой редактор использовать, пока только tiny_mce (по умолчанию)
  • attaches массив прикрепленных файлов (js и css), является общим для всех типов полей
    • js массив подключаемых js файлов
      • tiny_mce скрипт редактора, подключает tiny_mce.js (по умолчанию)
      • tiny_mce_init скрипт инициализации редактора. По умолчанию берется из CMS::stdurl('scripts/', 'tiny_mce_initialize.js'). Так же переопределить скрипт инициализации можно, просто положив его в [docroot]/scripts/tiny_mce_initialize.js
    • css массив подключаемых css файлов
  • images fields можно явно указать имена полей, из которых будут браться картинки (понимаются поля типов attaches и image). По умолчанию берутся все картинки из полей с типами attaches, image и gallery.
  • allow images field types допустимые типы полей для вставки картинок, по умолчанию attaches, image и gallery. Не используется если указан параметр images fields.
  • add images можно явно указать массив ссылок на картинки, которые добавятся для вставки в редактор
  • valid images extensions допустимые расширения для вставки картинок, по умолчанию 'jpg','jpeg','gif','png','bmp'

Пример:

  'body' => array(
    'caption' => 'HTML',
    'type' => 'html',
    'add images' => array('aa.jpg'),
  ),
  'body2' => array(
    'caption' => 'HTML2',
    'type' => 'html',
    'images fields' => array('photo')
  ),
  'body3' => array(
    'caption' => 'HTML3',
    'type' => 'html',
    'allow images field types' => array(),
    'add images' => array('aa.jpg'),
  ),

В первом случае для вставки доступны все картинки из полей с типами attaches, image и gallery + aa.jpg.

Во втором случае доступны только картинки из поля с именем photo.

В третьем случае доступна только картинка aa.jpg

protect

Добавляет поля для защиты от роботов (капча). Опции:

  • error_message выдаваемое сообщение в случае неудачной валидации
  • validate_error_message
  • hidden если установлено в true, то для пользователя ничего не выводится, а валидация осуществляется на уровне js
  • ajax включает ajax валидацию

Пример:

  'protect' => array(
    'type' => 'protect',
    'error_message' => 'Ты не робот ли?',
    'hidden' => true
  )

image

Поля для загрузки и поворотов картинок. В качестве значения сохраняется путь к файлу.

Действия осуществляются посредствам ajax-запросов.

Доступны следующие опции:

  • admin_preview_size - размер привьюшки в админе, по умолчанию 100, т.е. картинка пропорционально масштабируется чтобы влезла в 100 на 100 пикселей.
  • private - таже опция, что и для типа upload. Если установлена в true, то файлы грузятся за пределы docroot.
  • container - возможность задать свой контейнер. Опция доступна для всех типов полей.
  • upload_mods - возможность выставить набор преобразований, которые будут применяются к оригинальному изображению при закачке картинки.
  • presets - возможность задания набора именованных преобразований. Подробнее о данном механизме можно прочитать в CMS.Fields.Types.Gallery.
'photo' => array(
	...
	'caption' => 'Фотография',
    	'type' => 'image',
	'upload_mods' => 'fit(500,600)',
	'presets' => array(
    		'full_size' => 'fit(200,300)',
	),
),

Контейнер image имеет множество вспомогательных методов для манипуляции с картинкой (аналогично CMS::Images):

  • fit
  • resize
  • crop
  • margins (в CMS::Images данный метод называется fit_with_margins(), функционал аналогичен, но не путайте имена)
  • grayscale
  • watermark

Все эти действия кешируются, что позволяет писать в шаблоне, например:

print $entity->field('image_field_name')->fit(201,600)->render();

attaches

К любой редактируемой записи можно прикрепить произвольное количество файлов. Эти файлы никак не сохраняются в БД. Они просто лежат в определенном каталоге, имя которого - производное от числового идентификатора редактируемой записи. Из-за этого прикрепление файлов возможно только для уже существующей в БД записи (пока записи нет, неизвестен ее id, и каталог создать невозможно).

Загрузка и удаление файлов производится спомощью ajax запросов. Закаченные картинки доступны для вставки в HTML редакторе. Из опций доступно:

  • private как и у остальных полей, если установлено, то файлы сохраняются вне docroot.

gallery

Минигалерея реализованная по тому же принципу что и поле attaches, т.е. к редактируемой записи можно прикрепить картинки фотогалареи, но в БД ничего не сохраняется.

Все файлы сохраняются в катологе зависящем от id Entity. Так же в отдельном файле сохраняется дополнительная инфрмация, такая как подпись и сортировка.

Картинки можно сортировать перетаскиванием, редактировать подписи, а так же поворачивать аналогично полю image. Из опций доступно:

  • admin size размер превью в админе(по умолчанию 200x200)
  • private как и у всех полей, которые закачивают файлы
  • upload_mods модификация при закачке (например, можно сразу уменьшать размер закачиваемых картинок до максимально требуемого разрешения)
  • container можно переопределить класс контейнера, но наследуйтесь от стандартного CMS.Fields.Types.Gallery.ValueContainer

У поля также имеется контейнер, выполняющий аналогичные действия как и у поля image, но для всех файлов сразу, т.е.

  • fit
  • resize
  • crop
  • margins
  • grayscale
  • watermark

Действия также кешируются, все измененные картинки сохраняются в отдельном каталоге. Пример:

  print $item->field('gallery_field_name')->fit('250x250')->grayscale()->render();

render в качестве параметра принимает имя шаблона через который происходит отрисовка, по умолчанию выводится простой список img тегов.

Можно определить свой шаблон, в который поступят следующие аргументы:

  • files список файлов подвергшихся "изуверствам", т.е. в нашем случае fit('250x250')->grayscale(). Это именно список файлов, желательно тримить '.' и т.д.
  • original_dir директория с оригинальными картинками
  • original_files список оригинальных картинок
  • files_data данные с подписями
  • container ссылка на экземпляр контейнера

autocomplete

Почти как поле select, а именно совершенно другое поле. Combobox с автодополнением. Используется компонент из jQuery UI. Данные грузятся по ajax запросу.

Доступные опции:

  • load callback для получения записи по id
  • search callback для поиска. На вход подается введенное пользователем, результат должен быть в формате приемлемым для CMS::items_for_select
  • empty если false, то пустой элемент не добавляется, иначе используется как элемент для пустого выбора, по умолчанию array('id' => 0, 'title' => '---')
  • js_file при желании можно подменить js файл, который обрабатывает поле

Пример:

  'user_id' => array(
    'type' => 'autocomplete',
    'caption' => 'ComboBox',
    'search' => Core::Call(WS::env()->orm->users->calculate('name as title')->only('id, title')->search_by('name'), 'search'),
    'load' => Core::Call(WS::env()->orm->users, 'find'),
  )

tree_select

Поле аналогично полю select, но для выбора элемента из древовидного списка.

Опции:

  • text-wrap задает выводить тексты в выпадающем списке, может быть
    • none текст не переносится, выводится как есть, используется по умолчанию
    • wrap текст переносится
    • ellipsis текст обрезается и к нему добавляется '...'
  • flat по умолчанию true. Если установлено, то предпринимается попытка автоматического преобразования items в древовидную структуру. Если необходимая структура сформирована самостоятельно, то укажите явно значение false
  • level_up по умолчанию 1. Уровень вложенности, который всегда раскрыт.
  • items обязательный параметр, задает список. Сначала список пропускается через CMS::items_for_select, затем предпринимается попытка переобразовать плоский список в древовидный. Это делается в основном для данных из выборки DB.ORM.Mapper на основе свойств объекта title, id, parent_id. Само дерево имеет следующий формат:
    • id используемое значение, может быть как ключем в массиве, так и свойством объекта/массива
    • title выводимое описание, может быть как значением в массиве, так и свойством title объекта/массива
    • childs массив вложенных элементов дерева, каждый из которых имеет ту же структуру
    • expanded раскрыт или нет текущий элемент, по умолчанию false

Для преобразования данных в дерево по id, parent_id используется функция Core_Arrays::create_tree(), её можно использовать отдельно.

Пример:

  'tree_select' => array(
    'caption' => 'Tree selection',
    'type' => 'tree_select',
    'text-wrap' => 'wrap',
    'items' => array(
      0 => 'Нет',
      WS::env()->orm->vars,
      99150 => array(
        'title' => 'раздел1',
        'childs' => array(
          99130 => 'элемент1',
          99130 => 'элемент1',
        )
      )
    )
  )

map_coords

Поле служит для хранения географических координат и отображается в виде интерактивной карты одного из популярных сервисов (Google Maps, Яндекс.Карты).

Настройки:

  • service - тип сервиса, используемого для отображения карты (возможные значения: google - по умолчанию, yandex)
  • format - формат выводимых координат поля (decimal - в десятичном виде, по умолчанию; degrees - в градусах)
  • show_zoom - вывод поля для ввода масштаба (false - по умолчанию, true;) - удобно для изменения масштаба вручную, что в любом случае можно делать и средствами конкретного сервиса (через элементы управления картой)
  • options - массив настроек внешнего вида и поведения карты, аналогичен настройке вставки %MAPS; по умолчанию выглядит так:
 $default_options = array(
     'properties' => array(
         'zoom' => 3,
         'type' => 'roads',
         'style' => 'height: 180px; width: 180px; border: 1px solid black;',
     ),
     'controls' => array(
         'scale' => 'small'
     ),
 );
  • sqltypes - указание, как и в каких полях, сохранять введенные данные; должен быть в виде массива, где ключ - имя поля, значение - тип поля; возможные варианты:
    • не указывать параметр вообще:
 ....
 'coordinates' => array(
     'caption' => 'Координаты',
     'type' => 'map_coords'
 ),
 ....

- тогда данные будут сохраняться в виде "широта;долгота;масштабирование" в поле "coordinates", которое должно быть текстовым.

    • указать одно поле:
 ....
 'coordinates' => array(
     'caption' => 'Координаты',
     'type' => 'map_coords',
     'sqltypes' => array(
         'field' => 'varchar(50)'
     ),
 ),
 ....

- тогда данные точно также будут сохраняться в поле "field" (также текстовое); поле "coordinates" использоваться не будет.

    • указать три поля:
 ....
 'coordinates' => array(
     'caption' => 'Координаты',
     'type' => 'map_coords',
     'sqltypes' => array(
         'lat' => 'float',
         'lng' => 'float',
         'zoom' => 'int',
     ),
 ),
 ....

- данные будут сохраняться в 3 разных полях в порядке следования: широта, долгота, масштабирование - имена полей не принципиальны; соответственно первые два - вещественного типа, а последнее - целочисленного; поле "coordinates" использоваться не будет.

Пример настройки поля:

 'coordinates' => array(
     'caption' => 'Координаты',
     'style' => 'width: 200px;',
     'type' => 'map_coords',
     'service' => 'google',
     'format' => 'degrees',
     'sqltypes' => array(
         'latitude' => 'float',
         'longitude' => 'float',
         'zoom' => 'int'
     ),
     'options' =>array(
         'properties' => array(
             'type' => 'satellite',
         )
     ),
     'show_zoom' => true
 ),

При отображении списка записей в параметре $list_fields можно указать любые из используемых здесь полей, однако если выводится составное поле как, например, "coordinates" из примеров выше, то для него надо точно так же прописать параметр sqltypes (необходимы только имена полей в том же порядке следования):

 ....
 'coordinates' => array(
     'caption' => 'Координаты',
     'type' => 'map_coords',
     'sqltypes' => array('lat', 'lng', 'zoom'),
 ),
 ....

multivalue

Многозначное поле. В идеале предоставляет возможность сделать поле любого типа многозначным.

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

Колонка со значением соответствует типу используемого поля.

В таблице могут быть и любые другие поля, но эти два обязательны:

item_key_columnvalue_column
1value_1
1value_2
2value_1

При редактировании есть возможность добавлять новые значения и удалять существующие.

Несколько примеров:

'data' => array(
	'caption' => 'Data',
	'type' => 'multivalue',
	'widget' => 'html', // или например input или select и т.д.
	'tab' => 'multi',
	'assoc' => array(
		'table' => 'ftest_data',
		'key_column' => 'ftest_id',
		'value_column' => 'data',
		'id_columns' => 'id'
    	)
),
'users' => array(
	'caption' => 'Users',
	'tab' => 'multi',
	'type' => 'multivalue',
	'widget' => array(
		'type' => 'autocomplete',
		'search' => Core::Call(WS::env()->orm->users->calculate('name title')->only('id, title')->search_by('name'), 'search'),
		'load' => Core::Call(WS::env()->orm->users, 'find'),
	),
	'assoc' => array(
		//'mapper' => 'string, object, ...',
	      	'table' => 'ftest_users',
      		'key_column' => 'ftest_id',
	      	'value_column' => 'user_id'
	)
),

В первом случае используется многозначное поля для редактирования и добавления html описаний, само редактирование каждого описания производится также как и для обычного поля типа html.

Вместо текстового значения опции widget может быть массив с подробными настройками, как это сделано во втором случае. Поле users предназначено для редактирования множественных связей, т.е. к записи можно привязать произвольное количество пользователей, а выбор пользователя осуществляется с помощью поля типа autocomplete.

Подробнее о доступных опциях:

  • widget - тип поля, с помощью которого будет осуществляться редактирование одного значения. Может быть как строкой с именем типа, так и массивом с подробным описанием.
  • assoc - массив, в котором указываются настройки для доступа к таблице со значениями. Может состоять из следующих настроек:
    • mapper - маппер таблицы со значениями, или строка с его именем.
    • table - имя таблицы со значениями. Если не указан маппер, то по этой таблице он будет создан динамически.
    • key_column - имя колонки, в которой хранится идентификатор записи, к которой добавляются значения.
    • value_column - имя колонки, в которой хранятся значения.
    • id_columns - имя колонки с идентификаторм (не обязательное). Если указано, то при редактировании и удалении будет использоваться имя этой колонки в качестве первичного ключа. Если не указано, то при удалении и редактировании осуществляется поиск по key_column и value_column.

Внимание!!! Очень не рекомендуется использовать вариант без явного id, т.к. будут баги при дубликате значений.

    • ord_column - колонка, по которой будет осуществляться сортировка (не обязательно).

Кроме стандартных методов контейнера (render(), value() и др.), которые применяются для данного типа поля, есть и свои:

  • mapper - возвращает маппер таблицы с привязанными записями. При этом, если в настройках филда указан маппер, то используется он, если нет, то будет сформирован автоматически.
$item->field('emails')->mapper();
  • count() - возвращает количество привязанных записей.
$item->field('emails')->count();

$item->field('emails')->mapper()->count() //вызов метода аналогичен предыдущему
  • items() - возвращает массив (ArrayObject) привязанных записей.
$item->field('emails')->items();

$item->field('emails')->mapper()->select() //равнозначный вызов предыдущему
  • filter() - возвратит маппер записей по фильтру.
$item->field('email')->filter('name@mail.ru');
  • add() - позволяет добавить значение к списку записей.
$item->field('email')->add('name@mail.ru');
  • check_empty() - переопределенный стандратный метод проверки наличия контента в контейнере для его рендера.

Проверено не со всеми типами widget

multilang_ext

Тип мультиязычного поля. Применяется в многоязычной версии сайта.

Определение поля производится как для обычного, например, для input. При этом в таблице будут автоматически создаваться поля для каждой версии с именами вида fieldname_ru, fieldname_en, по количеству языков на сайте.

...
'test' => array(
		'type' => 'multilang_ext',
		'caption' => 'Какое-то поле',
		'sqltype' => 'varchar(100)',
		'tab' => 'content',
),
...

В таблице будут созданы поля: test, test_ru, test_en.

Опцию multilang дополнительно включать не надо. При выводе на форме, у поля автоматически будет отображаться выбор языковой версии.

Использование данного типа удобно применять для полей, по которым, например, неоходимо будет производить поиск или сортировку.

iframe

Поле для вывода отдельного фрейма.

Из настроек имеет опцию url - адрес страницы, которая будет выводиться во фрейме.

...
'test' => array(
		'type' => 'iframe',
		'sqltype' => 'varchar(255)',
		'tab' => 'content',
		'url' => '/news/',
),
...

youtube

Поле для вставки ссылки на ролик из YouTube. Тип реализован на основе контейнера, поэтому к нему применимы все свойства и методы родительского типа.

Кроме этого, при применении данного типа имеются индивидуальные особенности.

1. Возможность изменения размеров превью в админке (опция admin_preview_size). Для этого при описании поля необходимо задать размер изображения в данной опции.

// components/NameComponent/config/fields.php
return array(
	'articles' => array(
		...
		'video' => array(
			'sqltype' => 'varchar(500)',
			'type' => 'youtube',
			'caption' => 'Ссылка на видео с YouTube',
			'tab' => 'video',
			'admin_preview_size' => 600, // default = 200
		),
);

2. Режимы отображения и методы модификации с полем при выводе в шаблоне. Режимов в основном три: превью, по умолчанию в режиме iframe и object.

  • preview() - вывод картинки-превью. К превью могут быть применены такие же методы, что и к простому изображению.
$new->field('video')->preview();
$new->field('video')->preview()->fit(100,100);
  • resize() - изменение размеров фрейма.
$new->field('video')->resize('800','500');
  • iframe() - режим отображения ролика. Применяется по умолчанию.
  • object() - режим отображения.
  • Параметры встраеваемого проигрывателя.
ПараметрОписание
relЗначения: 0 или 1. Значение по умолчанию: 1. Этот параметр определяет, будут ли воспроизводиться похожие видео после завершения показа исходного видео.
autoplayЗначения: 0 или 1. Значение по умолчанию: 0. Определяет, начинается ли воспроизведение исходного видео сразу после загрузки проигрывателя.
playerapiidЗначением может быть любая буквенно-цифровая строка (имя плейера). Этот параметр используется в сочетании с API JavaScript.
loopЗначения: 0 или 1. Значение по умолчанию: 0. Если значение равно 1, то одиночный проигрыватель будет воспроизводить видео по кругу, в бесконечном цикле. Проигрыватель плейлистов (или пользовательский проигрыватель) воспроизводит по кругу содержимое плейлиста.
disablekbЗначения: 0 или 1. Значение по умолчанию: 0. Значение 1 отключает клавиши управления проигрывателем.
egmЗначения: 0 или 1. Значение по умолчанию: 0. Значение 1 включает расширенное джинн-меню. В этом режиме джин-меню (если оно есть) открывается при прохождении указателя мыши над областью воспроизведения видео, а не по нажатию кнопки меню.
borderЗначения: 0 или 1. Значение по умолчанию:0. Значение 1 включает рамку вокруг проигрывателя. Основной цвет рамки определяется параметром color1, а дополнительный цвет – параметром color2.
color1Значения: любое значение RGB в шестнадцатеричном формате. color1 - основной цвет рамки.
color2Значения: любое значение RGB в шестнадцатеричном формате. color2 - фоновый цвет панели управления и дополнительный цвет рамки.
startЗначение: положительное целое число. Если этот параметр определен, то проигрыватель начинает воспроизведение видео с указанной секунды. Обратите внимание, что, как и для функции seekTo, проигрыватель начинает воспроизведение с ключевого кадра, ближайшего к указанному значению. Это означает, что в некоторых случаях воспроизведение начнется в момент, предшествующий заданному времени (обычно не более чем на 2 секунды).
fsЗначения: 0 или 1. Значение по умолчанию 1 отображает кнопку полноэкранного режима. Значение 0 скрывает кнопку полноэкранного режима.
hdЗначения: 0 или 1. Значение по умолчанию: 0. Значение 1 включает воспроизведение с высоким разрешением по умолчанию. Это не повлияет на работу Chromeless Player. Этот параметр не работает, если для видео нет версии с высоким разрешением. Если этот параметр включен, то следует иметь в виду, что пользователи с медленными каналами связи могут испытывать неудобства при воспроизведении, пока не отключат функцию высокого разрешения. Убедитесь в том, что проигрыватель способен показывать видео в исходном разрешении.
showsearchЗначения: 0 или 1. Значение по умолчанию: 1. Значение 0 отключает вывод окна поиска при свернутом видео. Обратите внимание, что если параметр rel имеет значение 0, то окно поиска также будет отключено независимо от значения showsearch.
showinfoЗначения: 0 или 1. Значение по умолчанию: 1. При значении 0 проигрыватель перед началом воспроизведения не выводит информацию о видео, такую как название и автор видео. Если вы устанавливаете значение 1, после загрузки плейлиста в проигрывателе отображаются значки всех видео в списке. Эта функция поддерживается только в проигрывателе AS3, который позволяет загружать плейлисты.
iv_load_policyЗначения: 1 или 3. Значение по умолчанию: 1. При значении 1 аннотации видео по умолчанию будут отображаться, а при значении 3 – по умолчанию будут скрыты.
cc_load_policyЗначения: 1. Значение по умолчанию определяется настройками пользователя. Значение 1 вызывает отображение закрытых титров по умолчанию даже в том случае, если пользователь отключил титры.
  • enablejsapi - включает API Javascript. Значения: 0 или 1. Значение по умолчанию: 0.
  • enableiframeapi - включает API Javascript для режима iframe. При подключении плейра обязательно подкллючать API Javascript.
<?= $new->field('youtube')->playerapiid('player')->enableiframeapi() ?> //включаем плейер
<button onclick="player.playVideo()">Play</button> //добавляем кнопки включения / останова
<button onclick="player.stopVideo()">Stop</button>
$new->field('video')->autoplay(1); // Включение автопроигрывания при загрузке страницы

float

Тип данных, представляющий собой доработанный некоторым образом простой тип input.

В некоторых случаях, при использовании sqltype => float и вводе числовых данных с плавающей точкой в поле типа input, после сохранения записи происходит обрезание дробной части (отбрасывается часть после запятой, т.к. ожидается точка). Чтобы избежать потери данных, необходимо воспользоваться типом данных float.

Т.е. тип данных поля выставляем во float. При этом необязательно устанавливать sqltype, формат float будет присвоен автоматически.

'type' => 'float',

При использовании данного типа перестает играть роль выбор разделительного знака у числа (точка или запятая). Все знаки будут приводиться к точке.

Метки: CMS
16.07.2014
Все статьи