[support] Complex CCK data type - multiple fields
jp.stacey at torchbox.com
jp.stacey at torchbox.com
Fri Jul 13 14:04:32 UTC 2007
Hi,
um, returning late to this party: I worked out how to enter and save
complex CCK data types. As the drupal.org tutorials seem a bit opaque on
this I'm posting it here FYI.
Two of the module hooks for defining the CCK fields need to work in
tandem:
hook_field_settings('database columns', $field) needs to return
an array for setting up the db columns, with keys for all
the sub-data elements:
return array(
'descr' => array('type' => 'varchar', ...),
'depth' => array('type' => 'decimal', ...),
'width' => array('type' => 'decimal', ...),
'height' => array('type' => 'decimal', ...),
);
hook_widget('form', ... ) needs to return a chunk of form
API with fields whose names match the keys in the above:
$form[$field['field_name']][$delta] = array(
'#type' => 'fieldset',
'descr' => array(...),
'depth' => array(...),
'width' => array(...),
'height' => array(...),
);
CCK creates the database tables for you: I can't work out what prompts it
to create a new table and what just makes it save the values to
content_type_foo, though.
If you've read this far, then cheers,
J-P
> Eric Mckenna wrote:
> > Can you explain a little more. I'm having trouble making out what you
> > are trying to do.
> > Why does adding these fields to your "book" node not work?
> > And what do you mean by a "complex CCK data type"?
>
> By "complex" I mean having structured data within each occurrence of the
> field. For example, if my books were available in different languages,
> then that wouldn't be complex because each CCK field would be just a
> single dropdown:
>
> Available in:
> -------------
> English
> German
> Spanish
>
> Each occurrence of the book's format, however, has five bits of data in
> it: paperback/hardback, weight in ounces and three dimensions in
> centimetres. So I can't just use one of the out-of-the-box CCK field types
> and am not quite sure how to build a field type to cope with it.
More information about the support
mailing list