продолжение. начало тут
Поле. Обзор
1. Поле в ССК состоит из трех компонентов.
а. Собственно данные (то что хранится в базе)
б. Поля ввода (виджеты, способ ввода)
в. Форматтеры (то как данные выводятся)
2. Хорошим примером объясняющим эту концепцию будет поле типа "Дата/Время". Потому что данные указанного вида могут вводится различными способами. Пример на картинке.
3. Следующая диаграмма наглядно показывает концепции из пункта один - на примере данных из пункта 2.
Добавление новых полей
1. Чтобы добавить поле -- следует активировать необходимые модули в составе ССК.
2. Например, для получения возможности создавать текстовые поля -- следует активировать модуль text.module
3. Создание поля выглядит так:
Примечание 1: обратите внимание на выноски. Первая говорит о том, что лейбл "Text" означает тип вводимых данных. Вторая выноска сообщает о том, что выбирая опцию "Text field" -- мы выбираем способ ввода данных.
Примечание 2: Возможно, что все эти концептуальные подробности как и фиксация автора (и как следствие переводчика) на терминологии могут показаться излишними. Уверяю вас, когда вы возметесь писать модуль работающий с ССК -- все это вам сильно понадобится. Мы же все тут мечтаем написать модуль работающий с ССК, не правда ли?
4. Если вы все это проделали, то упомянутая выше (в конце первой части) таблица content_type_test будет выглядеть так:
mysql> describe content_type_test; +--------------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------------+------------------+------+-----+---------+-------+ | vid | int(10) unsigned | NO | PRI | 0 | | | nid | int(10) unsigned | NO | | 0 | | | field_example_text_value | longtext | YES | | NULL | | +--------------------------+------------------+------+-----+---------+-------+ мы добавили поле "Example text"
Настройки полей. Глобальный уровень и уровень экземпляра.
1. Глобальные настройки хранятся в таблице node_field.
2. Они включают в себя тип вводимых данных, предельные значения, фильтры и проч.
mysql> select * from node_field; | |
---|---|
Column name | Value |
field_name | field_example_text |
type | text |
global_settings | a:4:{ s:15:"text_processing";s:1:"1"; s:10:"max_length";s:0:""; s:14:"allowed_values";s:0:""; s:18:"allowed_values_php";s:0:""; } |
required | 1 |
multiple | 0 |
db_storage | 1 |
3. Таблица node_field_instance хранит настройки поля характерные для ТД, где это поле используется.
4. Эти настройки включают в себя настройки виджета (то как данные буду вводиться), метку поля (label), описание и тому подобное.
mysql> select * from node_field_instance; | |
---|---|
Column name | Value |
field_name | field_example_text |
type_name | test |
weight | 0 |
label | Example text |
widget_type | text |
widget_settings | a:3:{s:13:"default_value"; a:1:{ i:0; a:1:{ s:5:"value"; s:0:""; } } s:17:"default_value_php";s:0:""; s:4:"rows";s:1:"1"; } |
display_settings | a:0:{} |
description | This is an example text field for a Lullabot article. |
продолжение следует. правки и примечание в комментарии
Комментарии
спасибо, исправлено