Как разобраться в модуле CCK

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

Аватар пользователя SaBoNim SaBoNim 26 ноября 2007 в 16:15
1

Итак, представляю всеобщему вниманию перевод страницы http://drupal.org/node/162242 и последующих. Для новичков.
Об CCK:
Drupal включает несколько типов документов по умолчанию – страницы, блоги, форумы, статьи и книги, но они достаточно просты и весьма ограничены без поддержки мощных конструкторов типов содержимого. Модуль CCK позволяет создать свой собственный тип, или добавить новые поля к основным типам содержания. Есть много допдлнений для CCK(http://drupal.org/project/Modules/category/88 - англ, http://setegnom.com/node/246 - рус), что расширяет возможности Drupal без необходимости программирования.

Установим CCK со страницы http://drupal.org/project/CCK. Здесь лежит перевод http://drupal.ru/node/3634 (от vadbars@drupal.org) и еще новый здесь http://www.drupal.ru/node/9722 (от VladSavitsky). Идем admin/content/types, видим, что добавились вкладки "поля", "экспорт", "импорт"..

Создадим новый тип - нажмите на "Добавить тип документа": придумайте название и машинное имя. Я ввела название "информация о продукте" и машинное имя "info_product". В списке типов документов нажмите "изменить". Рядом с вкладкой "изменить" появились "Управлять полями", "Показать поля", "Добавить поле", "Добавить группу". Добавим новое поле артикул.

На странице "Добавить поле" вам будет предложено назвать поле. Вы можете вводить здесь a-z, 0-9, включая пробелы, это имя будет использоваться в базе данных. Если вы ввели "Articul", фактическое поле название станет field_articul. Заметим, что машинное название поля не может быть изменено позднее!

Ниже области имя вы увидите список полей, которые имеются в наличии. Основные поля 'Text', 'Integer', 'Decimal', 'Node reference' (http://www.drupal.ru/node/7295), и 'User reference'. Эти типы содержания, которые можно создать для нового поля. 'Text' создает содержание, которое хранится в базе данных в виде простого текста. 'Integer' и 'Decimal' создают содержания, которые сохраняются в базе данных как числа (целое и десятичное). 'Node reference' и 'User reference' запоминают идентификаторы записей пользователей и самих пользователей в базе данных, чтобы можно было ссылаться на них.

Для каждого типа области есть несколько параметров, отвечающих за то, каким образом данные будут вноситься в него (CCK называет их "виджеты"). Имеются различные варианты для каждой области, например, текстовое поле, то есть пустое поле, куда пользователь может ввести текст; автоматически заполняемое поле, куда пользователь может ввести текст, и система попытается дополнить текст из значений, имеющихся в базе данных; списки, флажки и переключатели.

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

Далее:

Заголовок

Создать метку здесь. Альтернатива машинному названию поля, для человека. Может содержать пробелы и не символы, может быть изменена позже. Машинное название поля не изменяется.

Колонки

Это опция только для текстового поля. Если Вы оставите ее «1», по умолчанию, у вас будет обычное текстовое поле в 1 строчку, которая будет хранится в виде строковой переменной в базе данных. Если вы выберете больше чем "1", вы получите большое текстовое поле в форме (несколько строчек).

Значение по умолчанию

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

Показывать в группе

Если вы включили Fieldgroup подмодуль, вы увидите возможность выбрать группу. Если вы еще не создали ни одной из групп, это не будет иметь никаких последствий.

Справочный текст

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

Настройки данных

Обязательно
Если Вы выберете этот флажок, пользователям придется заполнить текущее поле обязательно, и они не смогут отправить все остальные поля без заполнения этого. У поля появится звездочка.

Множественный выбор
Если выбран он, пользователи смогут выбрать (для флажков) или создать (для текстового поля) более одного значения поля. Один из наиболее распространенных видов использования этого условия - текстовое или числовое поле, которое использует выбор из списка или флажки, и пользователи могут выбрать более одного пункта.

Обработка текста

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

Максимальная длина

Максимальная длина поля (количество знаков). Оставьте поле пустым для неограниченной длины. Если это текстовое поле, эта величина будет использоваться для сокращения поля до выбранного размера.

Список допустимых значений

Только для случаев, когда выбраны флажки, переключатели и выпадающий список. Здесь вы можете определить перечень вариантов, что пользователи могут выбрать.

Нажав на кнопку мы попадем на страницу «Управлять полями».

После того как по крайней мере одно поле создано, она станет вашей основной страницей для управления полями. Вы увидите все созданные вами поля с помощью CCK и поля от других модулей, которые CCK не может изменять. Например, вы увидите "Title". Каждое поле имеет вес, который управляет порядком полей при создании и редактировании документа данного типа (легкие сверху). Если включен Fieldgroup подмодуль, вы увидите поля по группам. Можно изменить вес и для каждой группы. Если у вас нет групп, используйте меню "Добавить группу”.

"Title" имеет вес по умолчанию -5, что не может быть изменено CCK. Если тип документа включает тело («Body»), оно имеет вес 0. Если тип материала использует таксономию, она весит -3. Поэтому нужно выбирать вес, чтобы новые поля вписывались в старые (можно поправить код чтобы все это вам не мешало - http://drupal.org/node/162249#comment-272247). Если у Вас много полей, может быть трудно разместить их все между другими элементами в форме. Вот где бывает удобно использовать Fieldgroup, поскольку вы можете поместить полях в группы, а затем организовать их по весу внутри каждой.

В меню "Показать поля" вы можете установить, где и какие значения полей и названия должны находиться в вашем документе. Можно выбрать какой заголовок поля должен быть скрыт или находится выше или рядом с полем.

Для каждого поля можно выбрать как оно будет отображаться в тизере и в полном документе, выбрав форматирование. Имеются разные типы форматирования. Для текстовой области можно выбрать "Default", "Plain text" (Простой текст), "Trimmed" (Обрезанный) и "Hidden" (Скрытое). "Default " будет показывать обычного вида текст, как HTML, если выбран тип форматирования Full HTML, или фильтроваться выбранным фильтром. "Plain text" будет показывать текст без HTML. "Trimmed" будет обрезать длинные текстовые области до длины установленной для тизера, и наконец "Hidden" вообще не будет показывать их. Итак, можно скрыть область в тизере но показать в полном материале.

После того как вы создали поля для вашего типа документа, с учетом их веса и поместили их в группы, выбрали варианты представления, вы готовы создать новый материал. Выберите меню "Создать материал", затем его тип, который вы только что создали, и вы увидите форму, содержащую ваши поля. Посмотрите, что поля работают правильно, заполнив их и нажав кнопку.

Комментарии

Аватар пользователя SaBoNim SaBoNim 26 ноября 2007 в 18:30

Вопрос остался с Node reference и User reference - так и не поняла что это такое (может потому что не нужно пока), может кто-нибудь объяснит?

Аватар пользователя pihel pihel 26 ноября 2007 в 22:27

User reference - ссылка на пользователей сайта (может быть селект/мультиселект) так и тектовое поле подстановки
Node reference - поле для выбора нода

Аватар пользователя VladSavitsky VladSavitsky 29 ноября 2007 в 12:08

Давно хотел углубиться в эту тему и сейчас же этим займусь! Спасибо.

pihel: "Node reference - поле для выбора нода"
А как задаётся ссылка по названию ноды или её номер? Я сделал поле с автозаполнением, чтобы проверить, не он не подхватыват ни номер, ни начальные буквы из названия...

Ответ: нужно было ниже указать типы материалов, на которые можно ссылаться. Всё заработало! Ссылка по названию ноды.

Аватар пользователя Nikit Nikit 4 декабря 2007 в 3:44

Думается надо для новичков подходить от обратного (помоему они начинают уже бояться на одно название CCK), например, как создать вот такие-то сайты с распространёнными тематиками (простой инет-магазин, библиотека, что еще?), показать уже готовые страницы, и уже потом приступать к показу как это сделать (конечно вместе с views)...

Аватар пользователя fgamer fgamer 19 декабря 2007 в 21:43

ЧТО то как-то не понятно вобще.
Скажите кто нить пример:
1) т.е. цель получить то-то
2) используем ССК потому, т.к. это можно сделать только вот-этим модулем

"добавить новые поля к основным типам содержания" - зачем эти поля и что они дают, решение каких проблем? А то, как то написано, что добавляем какие-то поля, а для чего это далается не понятно.

Привидите кто нибудь пример реальный (т.е. какая цель и как это делается на ССК). Буду очень благодарен и наверно не я один.

Например мне нужно сделать фотогалерею , прочитал что кто-то делает это на ССК + ImageField , пытался разобраться но что-то не понял как все это работает.

Аватар пользователя SaBoNim SaBoNim 21 декабря 2007 в 13:27

Допустим вас не устраивает что в тип материала "story" входит только поле Заголовок и Содержимое, допустим вы хотите добавить поле с картинкой или настроение из выпадающего списка выбрать (создав возможные варианты заранее), или написать как в блогах что сейчас слушаете (какую музыку), тогда вы можете с помощью CCK добавить к типу материала "story"" (или любому другому) дополнительное поле и настроить его вывод с помощью contemplate (он позволяет создавать шаблоны HTML для определенных типов материала), чтобы то что вы ввели в поле настроение отображалось в начале записи другим шрифтом.
Это пример.
Вот прикрепила 2 скриншота одного окна - это созданный тип материала "информация о товаре" с созданными для него с помощью CCK полями (используя ImageField), пример реализации уже дала Zlata чуть выше - там настроен вывод в таблице с помощью Views. То есть она просто заполнила поля данными и вывела это таблицей.
Если честно, опыта создания галереи с помощью ImageField и CCK у меня нет, поэтому тут надо попросить более опытных рассказать как это реализуется. Мне кажется что без Views не обойтись.

Аватар пользователя achadidi achadidi 21 декабря 2007 в 14:47

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

Аватар пользователя SaBoNim SaBoNim 21 декабря 2007 в 15:13

Создавая выберите Text, Select list. На след странице напишите в самом нижнем поле "Список допустимых значений" в строчке по одному названию

Аватар пользователя achadidi achadidi 22 декабря 2007 в 18:45

спасибо! получилось!
только теперь возникли еще вопросы, не могли бы Вы помочь?

я сделала несколько видов форм - поиск попутчика,друзей, книг, и все заполненные формы падают в одну кучу.
как настроить что бы они попадали в раздел Объявления и соответствующий им подраздел Попутчик, Книга и т.д. ?
я пыталась сделать через катагории, но тогда в каждой форме объявления появляется выбор типа объявления и удалить его нельня, а он уже сделан при выборе типа материала.

и еще, наверное не в тему, но можно ли сделать что бы коммент, который пользователь напишет к форме, пересылался автору объявления по мэйлу и\или в личные сообщения, если такие в друпале можно сделать

Аватар пользователя SaBoNim SaBoNim 23 декабря 2007 в 3:38

А можете подробнее объяснить какие у вас формы? Это разные типы материалов для каждого вида объявления или все один тип?
Если разные, то модулем taxonomy defaults можно установить для каждого типа свой термин заранее.
А для уведомлений есть специальный модуль Comment notify

Аватар пользователя achadidi achadidi 24 декабря 2007 в 16:57

каждая форма включает несколько текстовых полей и Select list, разные объявления отличаются только содержанием полей и их числом. по идее это разные типы, по крайней мере в меню создания материала они фигурируют отдельно - найти попутчика, найти путеводитель и т.д.
я сделала отдельный словарь Объявления в таксономии, ввела разные объявления как разные термины. но почему то не получается то, что нужно.
во-первых они все равно попадают в одну кучу с другими текстовыми материалами, не внесенными в таксономию, а во- вторых тогда в каждой форме появляется менюшка выбора вида объявления, хотя вид уже выбран.
может я чего то делаю не так?
спасибо за Comment notify , попробую

Аватар пользователя SaBoNim SaBoNim 24 декабря 2007 в 23:08

Этот выпадающий список позволяет прикрепить ваш документ к ранее созданным терминам. Он появляется так как вы связали ваш словарь с типами документов Найти попутчика и Найти путеводитель.
Скоро я разберусь и помогу вам)))

Аватар пользователя SaBoNim SaBoNim 24 декабря 2007 в 23:34

В настройках словаря выберите такой тип документа, который не виден пользователем, а только вам. То есть примерно как на втором скриншоте.
Далее скачайте и установите модуль taxonomy defaults. Появится вкладка по ссылке Категории под названием Default terms. Нажмите и сделайте с вашими терминами так как на первом скриншоте. У меня получилось вроде бы. Чтобы не попадали на главную, уберите в настройках типов документов галочку "публиковать на главной".

Аватар пользователя achadidi achadidi 25 декабря 2007 в 2:22

ничего не выходит, менюшка объявления не отключается, то же самое с изображениями в галерее. не отключается ни в какой комбинации. видимо придется отказаться от таксономии в этом случае
но может быть подскажете что делать со второй бедой, что бы заполненная форма летела не в контент (главная отключена) а в свою персональную папочку или файлик, где ее можго увидеть.
создаю форму add/companion, прописала путь для нее в раздел announcements/companion/на выходе получается announcements/companion-01 или 05 или announcements/companion/name
и файл формы виден только из /admin/content/node, а announcements/companion/ девственно чист. а в ручную ведь все не пропишешь%)
может быть для форм нужно создавать контейнеры формирующие ссылки на содержимое какими-то спец.модулями?

Аватар пользователя achadidi achadidi 25 декабря 2007 в 15:14

да, я его как раз и использую
посоветовали пользоваться views, получается то, что нужно
буду пыться рабозраться

Аватар пользователя yk yk 8 февраля 2008 в 13:34

"Title" имеет вес по умолчанию -5, что не может быть изменено CCK. Если тип документа включает тело («Body»), оно имеет вес 0. Если тип материала использует таксономию, она весит -3. Поэтому нужно выбирать вес, чтобы новые поля вписывались в старые (можно поправить код чтобы все это вам не мешало - http://drupal.org/node/162249#comment-272247)

А как быть если при добавлении(редактировании) ноды поле ССК должно появиться между двумя терминами таксономии?

Аватар пользователя SaBoNim SaBoNim 8 февраля 2008 в 13:56

Уберите у словаря галку на вашем типе документа.
Скачайте модуль CCK Taxonomy. Создайте новое поле: там появится выбор словарей из таксономии. Его вес можно настраивать самому.

Аватар пользователя yk yk 8 февраля 2008 в 15:09

да про такую возможность знаю, но мне кажется это идеологически неправаильно, если словарей с десяток а полей ССК всего 2, переводить словари в поля ССК, мне кажется, не совсем верно

Аватар пользователя Stasinus Stasinus 17 марта 2009 в 17:40

Создаю в новом Типе материалов текстовое доп. поле типа Select list. Указал все необходимые параметры, причем указал его обязательным полем.
Но когда создаю материал этого типа, либо редактирую уже созданный материал, в админке этого поля НЕТ ВООБЩЕ.
Куда делось? Smile

Аватар пользователя Firewalker Firewalker 15 октября 2009 в 1:21

Кеш штука мистическая и может быть непосредственно замешан в проблеме. Самый вершый способ это проверить - очистить кеш. Но есть вариант, что я ошибаюсь, не зная деталей ситуации

Аватар пользователя staryi@drupal.org staryi@drupal.org 27 октября 2009 в 10:15

Как форматировать поля формы по своему желанию ?? поля например некоторые в встречку делать, некотороые в столбик, какие то по центру, другие по правому краю. Подскажите кто имел опыт работы с подобными вещами.

Аватар пользователя Skdch Skdch 7 января 2010 в 5:00

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 7 января 2010 в 5:09

Эх... Readme cтало читать не модно, логику включать тоже... Да и вообще читать походу не модно, далее цитата из статьи:
...Установим CCK со страницы http://drupal.org/project/CCK. Здесь лежит перевод http://drupal.ru/node/3634 (от vadbars@drupal.org) и еще новый здесь http://www.drupal.ru/node/9722 (от VladSavitsky). Идем admin/content/types, видим, что добавились вкладки "поля", "экспорт", "импорт"...

Аватар пользователя gogad gogad 11 октября 2010 в 21:34

м-да на какую статью форума не попаду: RxB над над новичками издевается!!!и не надоело еще...
знаем мы что мы еще несведущие, дак и не обязательно это каждый раз повторять забивая форум витиеватыми фразами. просто посоветуйте новому учаснику набраться терпения. да и все! или выделяйте ЖЫРРНННЫММИ буквами важные моменты ваших подсказок потому как этого на форуме не хватает.

Аватар пользователя run run 11 октября 2010 в 23:26

"gogad" wrote:
м-да на какую статью форума не попаду: RxB над над новичками издевается

RxB хоть и «издевается» но по делу, а не просто так льёт грязь. Он конструктивно говорит. Мне его «издевательста» однажды помогли.

Аватар пользователя gogad gogad 25 октября 2010 в 10:39

"run" wrote:
RxB хоть и «издевается» но по делу, а не просто так льёт грязь. Он конструктивно говорит. Мне его «издевательста» однажды помогли.

мне он тоже помог Smile да и не одним нам.
а вообще спасибо тебе RxB за то что ты у нас есть... да и всем кто помогает познать DRUPAL во всем его величии Smile

Аватар пользователя GFelix GFelix 27 января 2011 в 13:41

Может не по теме, перенаправьте куда следует...
Как устанавливается multifield в CCK? А то для модуля Slider очень нужно... Вроде делал так как написано. Правда есть сомнения относительно того, правильно ли я там всё понял. Очевидно, придётся учить аглицкий с уклоном в сторону (веб-)программирования Lol

Аватар пользователя malgaeva malgaeva 28 апреля 2014 в 12:17

Я вижу что в этом модуле нет такого типа, не подскажите как его создать? может какой-то другой модуль есть?