2014-01-30 9 views
2

Что я пытаюсь сделать, так это включить/отключить ревизию в соответствии с выбранным таксономическим термином в типе контента, который я создал, т.е. когда пользователь добавляет контент, который пользователь может выбрать поле таксономического термина (может быть поле выбора) в соответствии с выбранным параметром Я хочу включить/отключить ревизию. Как я могу это сделать?Как включить/отключить ревизию в drupal 7

ответ

2

Отключите создание новой настройки ревизии для типа содержимого.

Затем в hook_form_alter добавить новый обработчик представления перед основным одного:

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_save вызывается в node_form_submit, а объект узла построен в 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; 
    } 
} 

Теперь я на самом деле не пытался ничего из этого, но даже если она не работает, я уверен, что вы будете на праве трек ... Удачи!