Адрес исходного материала: http://www.lullabot.com/articles/an_introduction_to_the_content_construc...
Синопсис: В статье рассказывается о том, каким образом модуль ССК получает, хранит и отображает данные.
Предисловие: Этот перевод не является дословным. Из каждого абзаца извлечено только то, что имеет отношение к делу(по моему мнению). Те предложения, которые были призваны обеспечить литературную красоту текста -- нагло пропущены (как и те, которых банально не понял). Причина тому -- обычная человеческая лень и ничего более.
Тезисы пронумерованы. Зачем? Не могу сказать. Видимо для того, чтобы придать тексту хоть какую-то убедительность.
Собственно конспект
Что такое ССК? Взгляд со стороны БД
1. Статья описывает ССК версии 5.х-1.4.
2. Предшественником ССК был модуль Flexinode.
3. CCK лучше чем Flexinode.
Типы материалов и content.module
1. Drupal5 позволяет создавать дополнительные типы данных (далее ТД).
2. Стандартная поставка содержит два ТД. Page и Story. Их можно удалить или перенастроить.
3. ССК предоставляет возможность создавать дополнительные разнотипные поля внутри существующих и создаваемых ТД.
4. Главный модуль в составе ССК -- это content.module.
5. При установке ССК content.module создает в БД дополнительные таблицы для каждого существующего ТД.
6. Так выглядит таблица для типа данных Page.
mysql> describe content_type_page; +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | vid | int(10) unsigned | NO | PRI | 0 | | | nid | int(10) unsigned | NO | | 0 | | +-------+------------------+------+-----+---------+-------+ поля vid и nid -- минимум необходимый для создания расширенного ТД
Примечание: А теперь внимательно! Тут важное.
7. Поля созданные через ССК представлены двухуровневой схемой.
8. Первый уровень -- ГЛОБАЛЬНЫЙ. Он не зависит от какой ТД то или иное поле расширяет.
9. Второй уровень -- УРОВЕНЬ ЭКЗЕМПЛЯРА. На этом уровне поле может быть настроено для конкретного ТД.
10. Это разделение легко иллюстрируется схемами таблиц из БД.
mysql> describe node_field; +-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | field_name | varchar(32) | NO | PRI | | | | type | varchar(127) | NO | | | | | global_settings | mediumtext | NO | | | | | required | int(11) | NO | | 0 | | | multiple | int(11) | NO | | 0 | | | db_storage | int(11) | NO | | 0 | | +-----------------+--------------+------+-----+---------+-------+ тут хранятся данные глобального уровня
mysql> describe node_field_instance; +------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+-------+ | field_name | varchar(32) | NO | PRI | | | | type_name | varchar(32) | NO | PRI | | | | weight | int(11) | NO | | 0 | | | label | varchar(255) | NO | | | | | widget_type | varchar(32) | NO | | | | | widget_settings | mediumtext | NO | | | | | display_settings | mediumtext | NO | | | | | description | mediumtext | NO | | | | +------------------+--------------+------+-----+---------+-------+ тут хранятся данные о том, как отображать поле (метка, вес, описание итд) -- то есть данные уровня ЭКЗЕМПЛЯРА
Создание нового ТД
1. Для создания нового ТД следует пройти на ...Administer -> Content management -> Content types -> Add content type (admin/content/types/add)
2. Для этой статьи автор создал тестовый ТД с именем "test" (Сюрпрайз! Сюрпрайз!пр. переводчика) и описанием "Test content type".
mysql> describe content_type_test; +-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | vid | int(10) unsigned | NO | PRI | 0 | | | nid | int(10) unsigned | NO | | 0 | | +-------+------------------+------+-----+---------+-------+ Структура таблицы для нового ТД
продолжение следует. Правки и замечания в комментарии
Комментарии
«Он не зависит от какой ТД то или иное поле расширяет.» по моему тут ошибка
В свете вышедшего недавно CCK 6.x-2.1 не понятно, зачем было браться за перевод столь древнего материала.
Автор молодец!
ИМХО для того, чтобы чувствовать себя на ты с модулем, полезно знать его эволюцию.
Проще начинать с простого.
Дочитав этот перевод забыл что это ПЕРВАЯ ЧАСТЬ.. вспомнил - и пошёл читать вторую и третью!