【发布时间】:2014-01-30 08:48:13
【问题描述】:
我要做的是根据我创建的内容类型中选择的分类术语启用/禁用修订,即当用户添加内容时,用户可以选择分类术语字段(可能是选择字段) 根据我要启用/禁用修订的所选选项。我怎样才能做到这一点?
【问题讨论】:
我要做的是根据我创建的内容类型中选择的分类术语启用/禁用修订,即当用户添加内容时,用户可以选择分类术语字段(可能是选择字段) 根据我要启用/禁用修订的所选选项。我怎样才能做到这一点?
【问题讨论】:
关闭内容类型的创建新修订设置。
然后在 hook_form_alter 中在 main 之前添加一个新的提交处理程序:
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 pageput
$node->revision = 1;
在节点保存之前会创建一个新的修订版。
在node_form_submit中调用node_save,在node_form_submit_build_node中构建节点对象。
查看其他属性,如 vid 属于 $form_state 我会说一个很好的有根据的猜测是把 $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;
}
}
现在我实际上并没有尝试过任何这些,但即使它不起作用,我相信你会走在正确的轨道上......祝你好运!
【讨论】: