Вы здесь

Drupal - Урок шестой - Модуль CCK. Создаем свой content type, и добавляем к нему поля.

Одним из модулей-столпов на которых зиждется Drupal, наравне с Views, является модуль CCK (Content Construction Kit). Он позволяет создавать произвольные типы документов, а так же добавлять к ним новые поля. Скачать модуль можно тут. В пакет модулей CCK входят следующие модули:

Content — Основной модуль, без него ничего работать не будет. Позволяет создавать новые типы документов (Content types).
Content Copy — позволяет импортировать/экспортировать определение полей.
Content Permissions — позволяет устанавливать права доступа на уровне полей.
Fieldgroup — с помощью него можно группировать поля.
Node Reference — добавляет к документу ссылку на другой документ.
Number — добавляет численное поле.
Option Widgets — добавляет дополнительные типы выбора для текстовых и числовых полей.
Text —  добавляет текстовые поля.
User Reference — позволяет добавлять поле с ссылкой на пользователя.

Зайдем в меню «Administer › Site building › Modules» и включим их все.

В меню «Administer › Content management › Content types» добавим новый тип документа.



Необходимо заполнить 2 поля: Name (Имя для пользователя) и Type (имя для машины).



Сохраняем новый тип данных, сейчас он практически ничем не отличается от типа Story, давайте его разнообразим. Жмем «Edit».


Следом нажимаем «Manage fields».



После включения модуля CCK тут добавилась вкладка Add



где можно добавить новое поле, и новую группу полей. Для добавления нового поля нужно ввести:

Label — заголовок поля который увидят пользователи.
Name — машинное имя.
Type of data to store — тип поля (у нас их 6, но на drupal org можно скачать множество дополнительных модулей).
Form element to edit the data — Элемент формы для редактирования поля. Если по-русски, то тут мы выбираем как будем вводить данные в это поле если например у поля типа «Text» выбрать «Text field», то будет одно строчное поле для ввода текста, а если выбрать «Text area», то получим много строчное поле. У разных типов полей разные варианты элементов формы.

Добавим поле с заголовком «Text», именем «text», типом «Text», элементом формы «text field», и нажмем «Save».



Здесь можно настроить только что добавленное поле.
Size of textfield — размер поля.
Default value — значение по умолчанию.
Required — если галочка установлена, то при добавлении материала данное поле будет обязательно для заполения.
Number of values — количество значений которое может ввести пользователь.

Я оставил все значения без изменений, и сохранил. Только что созданное поле отобразилось в списке, его можно перетащить мышкой, тем самым выбрав его месторасположение.



Для того что бы изменить то, как поле будет отображаться, нужно зайти во вкладку «Display fields».



Здесь выводится список полей. Мы можем изменить:
Label — заголовок. Above — отображается выше содержимого поля. Inline — отображается на одной линии с содержимым. <Hidden> - не показывать заголовок.
Teaser — как отобразать поле в превью. Default — по умолчанию. Plain text — обычный текст. Trimmed — обрезанный. <Hidden> - не показывать поле в превью.
Exclude — исключить поле из превью.
Full node — значения аналогичны Teaser, но распространяются не на превью, а на полный документ.
Exclude — исключить поле из документа.

Таким же образом в тип документа можно добавить и другие поля. Для CCK доступно более 300 дополнительных модулей, и если вам нужно добавить какое либо поле не входящее в стандартную поставку, ищите модуль на drupal org.

На этом урок закончен, чуть позже мы вернемся к модулю CCK, и рассмотрим работу с ним более подробно.А так же, я думаю, попробуем скрестить в одном уроке CCK и Views.

 

Комментарии

Здравствуйте!
У меня опять такая же проблема, как в 4 уроке. При активизации модуля CCK выдается сообщение:
Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\worldcosm\www\includes\common.inc on line 511

while (!feof($fp) && $chunk = fread($fp, 1024)) {
$response .= $chunk;
}
fclose($fp);

Я уже исправил строчку memory_limit в файле php.ini на 256 М. Не помогает. Перезагрузка компа, как в прошлый раз - не помогла.

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

max_execution_time =30 ; 

эту строку в php.ini, она отвечает за время отведенное файлу для исполнения, поставьте побольше, секунд 300-600, перезагрузите апач, и поробуйте загрузить страницу еще раз. Скорее всего нехватает мощностей у компьютера, слабые комплектующие, или большое количество  запущенных программ.

Добрый вечер!
Скажите, есть ли возможность как-то скрыть заголовок материала и при создании ноды (видимо, его как-то при этом придется автоматически запонять), и при просмотре. Я хотел бы вместо заголовка поставить поле ввода тэга таксономии, чтобы при создании материала, автоматически добавлялось значение в словарь. Может, конечно есть еще какой-то путь решения проблемы, но пока я его не вижу, правда, я еще начинающий в Друпале. В семерке вроде сделали возможность прикручивать поля непосредственно к таксономии, но это пока не отлаженные вещи, а вообще было бы идеально, непонятно, почему сразу так не сделали...

Нет, заголовок убрать нельзя. В смысле совсем.

Евли вы хотите что бы заголовок не отображался на странице, и вместо него выводились термины таксономии, вам в 9 урок -)
 

Быть может, нужно сделать новый шаблон страницы, где не будет отображаться заголовок, но на его месте будут теги.

Нашел новое решение - http://drupal.org/project/auto_nodetitle

Как тут описывается, дает возможность скрывать заголовок содержимого:

"auto_nodetitle" is a small and efficient module that allows hiding of the content title field in the form. To prevent empty content title fields one can configure it to generate the title by a given pattern.

When the token module is installed it's possible to use various node data for the
auto generated title - e.g. use the text of a CCK field (since 5.x).

Advanced users can also provide some PHP code, that is used for automatically generating an appropriate title.

Было бы интересно почитать про то как можно заменить стандартное поле заголовка Node module form.
Есть модуль auto_nodetitle, он позволяет скрыть его.
Но, не понятно как его заменить, например, содержимым другого созданного мной поля.

Урок почитал, разобрался, всё получилось, а где чтоб видео загрузить?

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

Посмотрим, может быть я смогу вам чем-нибудь помочь -)

Здравствуйте!!! Я создал новый Тип Материалов, там добавил новые поля, потом с помощью Views создал блок вывел в правой колонке, получилось так что когда я захожу под администратором то вижу этот блок а стандартный пользователь не видит. Можете подсказать в чём причина???

Всё УРА я разобрался, просто в правах доступа поставил пользователей)))