Ich habe eine einfache mögliche Lösung in den bereits erwähnten Thread geschrieben: https://drupal.org/node/1048644#comment-7822687 . Der Einfachheit halber werde ich es hier einfügen.
Es gibt eine einfache Möglichkeit, vertikale Registerkarten in einem Formular zu deaktivieren, indem Sie einfach den $form['additional_settings']['#type']
Wert der Variablen 'fieldset'
in einer Implementierung von hook_form_alter () oder hook_form_FORM_ID_alter () ändern , wenn er gleich ist 'vertical_tabs'
.
Sie müssen die Zugriffseinstellungen nicht ändern oder das gesamte $form
Array rekursiv durchlaufen. Letzteres verbraucht unnötig zu viel Ressourcen.
(Getestet in 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);
}
}
Das ist alles, natürlich, ErsatzMYMODULEORTHEMENAME
zu Ihrem eigenen Moduls oder das Thema Namen (letztere in einer template.php
Datei), undmy_form_id
auf Ihre Form von id.
Sie können die vertikalen Felder auch nur für Benutzer deaktivieren , die NICHT die Administratorrolle haben :
/**
* 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);
}
}
}
Falls jemand daran interessiert ist, einen Patch angebracht I (die die gleichen wie oben hat) zu Dripman ‚s Sandbox - Modul: # 2.080.739: vereinfacht das Verfahren zur Deaktivierung Vertical Laschen nur mit dem Wechsel $form['additional_settings']['#type']
auf'fieldset'
.