In order to develop an element for Content Elements, you need to create EE2 fieldtype first. Once done, you need will to add the following functions:

Core functions (required):

display_element($data)

@param mixed $data – data stored in the element
@return string – element HTML markup

function display_element($data)
{       
    $field = array(
        'name'    => $this->element_name,
        'value'   => $data,
    );
    return form_text($field);
}

The following variables are available:

$this->settings – array with element settings
$this->field_name – name of the <input> field

replace_element_tag($data, $params = array(), $tagdata)

@param mixed $data – data stored in the element
@param array $params – parameters taken from the used tag
@param string $tagdata – HTML markup to be replaced with output
@return – HTML output

Used to render the element data (contents) on the front-end.

$this->settings – array with element settings
$this->element_title – name of the element (given upon creating it)
$this->element_id – element identifier (hash) assigned by the system

display_element_settings($settings)

@param array $settings – array with element settings
@return string/array – multi-dimensional array of setting name and HTML pairs

function display_element_settings($data){   
	return array(
		array(lang('rows'), form_input('maxl', @$data['rows'])),
		array(lang('cols'), form_input('maxl', @$data['maxl'])),
	);
}

Used to render the element settings in Content Element fieldtype settings.

save_element_settings($settings)

@param array $settings – array with submitted data
@return array

Allows to modify submitted data before they are stored in the database. Good for modifying an input.

function save_element_settings( $data )
{
	if ($data['rows'] > 10) $data['rows'] = 10;
	return $data;
}

validate_element($data)

@param mixed $data – data user has submitted on the publish page
@return mixed – TRUE if validation is OK, or error message

Used to validate the data being submitted.

function validate_element($data){
	if (!is_number($data))
	{
		return 'Error: Age must be number';
	}
	return TRUE;
}

save_element($data)

@param mixed $data – data user had submitted before before they were stored in the database
@return string – data to be stored in the database

function save_element($data)
{       
	//serialize array
	return serialize($data);
}

The following variables are available:

$this->settings – array with element settings
$this->field_name – name of the <input> field

post_save_element($data)

@param mixed $data – data user had submitted before before they were stored in the database
@return void

Used to additionally process the submitted data. The following variables are available:

$this->settings – array with element settings
$this->field_name – name of the <input> field
$this->element_title – name of the element (given upon creating it)
$this->element_id – element identifier (hash) assigned by the system

preview_element($data)

@param mixed $data – data stored in the element
@return – HTML

Used to display element preview in Control Panel after submitting the publish form. The following variables are available:

$this->settings – array with element settings
$this->element_title – name of the element (given upon creating it)
$this->element_id – element identifier (hash) assigned by the system