Я написав просте можливе рішення у вже згаданій нитці: https://drupal.org/node/1048644#comment-7822687 . Для зручності я вставлю його сюди.
Там простий спосіб відключити вертикальні вкладки на формі, просто змінивши $form['additional_settings']['#type']
значення змінної до 'fieldset'
в реалізації hook_form_alter () або hook_form_FORM_ID_alter () , якщо він дорівнює 'vertical_tabs'
.
Вам не потрібно змінювати налаштування доступу або ходити весь $form
масив рекурсивно, останній витрачає зайве занадто багато ресурсів.
(Випробувано в 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);
}
}
Це, звичайно, підміняйте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 пісочниці модуля «s: # 2080739: Спрощує метод відключення вкладки Вертикально тільки з змінюючи $form['additional_settings']['#type']
до'fieldset'
.