Saya menulis solusi sederhana yang mungkin ada di utas yang telah disebutkan: https://drupal.org/node/1048644#comment-7822687 . Untuk kenyamanan, saya akan menempelkannya di sini.
Ada cara sederhana untuk menonaktifkan tab vertikal pada formulir, dengan hanya mengubah nilai $form['additional_settings']['#type']
variabel ke 'fieldset'
dalam implementasi hook_form_alter () atau hook_form_FORM_ID_alter () , jika itu sama dengan 'vertical_tabs'
.
Anda tidak perlu mengubah pengaturan akses atau menjalankan seluruh $form
array secara rekursif, yang terakhir mengkonsumsi sumber daya yang tidak perlu terlalu banyak.
(Diuji dalam Drupal 7.23 .)
/**
* 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);
}
}
Itu semua, tentu saja, gantiMYMODULEORTHEMENAME
dengan modul Anda sendiri atau nama tema (yang terakhir dalam template.php
file), danmy_form_id
ke id formulir Anda.
Anda juga dapat menonaktifkan bidang vertikal hanya untuk pengguna yang TIDAK memiliki peran administrator :
/**
* 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);
}
}
}
Dalam kasus seseorang tertarik, saya terpasang patch (yang melakukan hal yang sama seperti di atas) untuk Dripman modul sandbox 's: # 2.080.739: Sederhanakan metode menonaktifkan tab vertikal dengan hanya mengubah $form['additional_settings']['#type']
ke'fieldset'
.