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即可。无返回。
}

第五步,自定义添加内容的表单,把扩展数据包含进去。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

机器人检查 *