如何在drupal 7中启用/禁用修订

时间:2014-01-30 08:48:14

标签: drupal drupal-7

我要做的是根据我创建的内容类型中选择的分类术语启用/禁用修订,即当用户添加内容时,用户可以选择分类术语字段(可以是选择字段) )根据所选的选项,我想启用/禁用修订。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

关闭内容类型的创建新修订设置。

然后在hook_form_alter中添加一个新的提交处理程序:#/ p>

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id) {
    //drupal_set_message("Form ID is : " . $form_id);
    switch($form_id) {
        case 'CONTENT_TYPE_node_form':
            //dpm($form);
            $form['actions']['submit']['#submit'][] = 'revision_control_node_form_submit';
            $form['actions']['submit']['#submit'] = array_reverse($form['actions']['submit']['#submit']); // reverse array to put our submit handler first
            break;
    }

}

然后在新的提交处理程序中检查分类术语是否具有保存新修订的正确值。我没有尝试过这个,但根据this page推出

$node->revision = 1;
在节点保存之前

将创建一个新版本。

node_form_submit中调用node_save,并在node_form_submit_build_node中构建节点对象。

查看属于$ form_state的其他属性,比如vid我会说一个好的教育猜测就是把$ form_state-> revision = 1;并查看在node_form_submit_build_node之后它是否作为节点的属性出现。

所以你最后的新提交处理程序将类似于:

function revision_control_node_form_submit($form, &$form_state) {
    if($form_state['values']['your_taxonomy_field'] == 'your_value') {
        $form_state->revision = 1;
    }
}

现在我还没有真正试过这个,但即使它不起作用我也相信你会走在正确的轨道上......祝你好运!