write a simple field type for CCK

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
guozan's picture

Hi ,I'm new to drupal module development, and want to write a simple field type for CCK, just to give a list for user to select, and then store the value. Drupal Verison is 6.22
To make it simple, I only write some hooks that I think may needed in the module....Situation is that,
the row in the table is created in the database, the page is presented correctly, but the field is not able to store data in the database, when I click submit, the page comes to be blank.

Here's the code for zebra.module. Did I forget some thing, thanks.

<?php

function zebra_field_info() {
return array(
'zebra' => array('label' => 'Zebra field',),
);
}

function zebra_field_settings($op, $field) {
switch ($op) {
case 'database columns':
$columns['value'] = array(
'type' => 'varchar',
'length' => 255,
'not null' => FALSE,
'sortable' => TRUE,
);
return $columns;
};
}

function zebra_field($op, &$node, $field, &$items, $teaser, $page) {
switch ($op) {
}
}

function zebra_widget_info() {
return array(
'zebra_widget' => array(
'label' => 'Zebra Widget',
'field types' => array('zebra'),
),
);
}

function zebra_widget_settings($op, $widget) {
switch ($op) {
}
}

function zebra_widget($op, &$node, $field, &$items) {
$element['value'] = array(
'#type' => 'select',
'#title' => t($field['widget']['label']),
'#default_value' => variable_get('zebra_widget_value', '0'),
'#options' => array('a', 'b', 'c', 'd'),
);

return $element;

}