Drupal 模块中扩展文章表单(node)
第一步:扩展node表单。扩展字段需要单独建表来保存扩展字段。
参考:http://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_form/7
/**
* Implements hook_form().
*/
function mymodule_form($node, $form_state) {
$form = node_content_form($node, $form_state);
$form['my_description'] = array(
'#clear' => TRUE,
'#type' => 'textarea',
'#resizable' => FALSE,
'#default_value' => isset($node->nid) ? $node->myd_description : '',
'#attributes' => array('class' => array('project-summary'), 'rows' => '5', 'cols' => '10'),
);
$form['#theme'] = 'mymodule_form';
return $form;
}
第二步: 校验数据 hook_validate()。参考:http://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_validate/7
/**
* Implements hook_validate().
*/
function mymodule_validate($node, $form, &$form_state) {
if(!$node->my_description){
form_set_error('my_description','请输入内容');
}
}
第四步: 对数据的增删改成。根据需要
function mymodule_node_insert($node) {
//根据内容类型,只需要保存扩展的数据即可。无返回。
}
function mymodule_node_delete($node) {
//根据内容类型,只需要删除扩展的数据即可。无返回
}
function mymodule_node_update($node) {
//根据内容类型,只需要更新扩展的数据即可。无返回。
}
function mymodule_node_load($nodes, $types) {
//根据内容类型,查询扩展的数据合并到$nodes即可。无返回。
}
第五步,自定义添加内容的表单,把扩展数据包含进去。