이미 언급 한 스레드에서 간단한 가능한 솔루션을 작성했습니다 : https://drupal.org/node/1048644#comment-7822687 . 편의상 여기에 붙여 넣습니다.
hook_form_alter () 또는 hook_form_FORM_ID_alter () 의 구현에서 $form['additional_settings']['#type']
변수의 값을 동일 하게 변경하면 양식에서 세로 탭을 비활성화하는 간단한 방법 이 있습니다.
액세스 설정을 변경하거나 전체 어레이를 재귀 적으로 걸을 필요가 없으며 , 후자는 불필요하게 너무 많은 리소스를 소비합니다.
(Drupal 7.23 에서 테스트되었습니다 .)'fieldset'
'vertical_tabs'
$form
/**
* Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
* @see https://drupal.org/node/1048644
*/
function form_disable_vertical_tabs(&$form){
// originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
$form['additional_settings']['#type'] = 'fieldset';
}
}
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'my_form_id'){
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
물론 모듈이나 테마의 이름 ( 파일 의 후자 ) 과 양식의 ID를 대체MYMODULEORTHEMENAME
하는 것 입니다.template.php
my_form_id
관리자 역할이없는 사용자에 대해서만 세로 필드를 비활성화 할 수도 있습니다 .
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
global $user;
$is_administrator = in_array('administrator', array_values($user->roles));
if($form_id == 'my_form_id'){
// if $user does NOT have the administrator role.
if (!$is_administrator) {
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
}
경우 누군가가 관심을, 난에 (상기와 같은 않는) 패치를 부착 Dripman 의 샌드 박스 모듈 : # 2080739 : 단순화 바로 변화와 수직 탭을 사용하지 않도록 설정하는 방법 $form['additional_settings']['#type']
에'fieldset'
.