CCK и БД - конспективный перевод (часть вторая)

Главные вкладки

Аватар пользователя karasiov@drupal.org karasiov@drupal.org 12 ноября 2008 в 1:06

продолжение. начало тут

Поле. Обзор

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.

продолжение следует. правки и примечание в комментарии

Комментарии