Daha önce bahsedilen konuya basit bir olası çözüm yazdım: https://drupal.org/node/1048644#comment-7822687 . Kolaylık olması için buraya yapıştıracağım.
Bir formda dikey sekmeleri devre dışı bırakmanın basit bir yolu vardır, eğer $form['additional_settings']['#type']
değişken eşitse hook_form_alter () veya hook_form_FORM_ID_alter ()'fieldset'
uygulamasında olarak değiştirilir .
Erişim ayarlarını değiştirmeniz veya tüm diziyi tekrar tekrar yürütmeniz gerekmez, ikincisi gereksiz yere çok fazla kaynak tüketir.
(Drupal 7.23'te test edilmiştir .)'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);
}
}
Hepsi bu, tabii ki, yerineMYMODULEORTHEMENAME
kendi modülü en veya temanın ismi (bir de ikincisine template.php
dosyası), vemy_form_id
sizin formun kimliği.
Dikey alanları yalnızca yönetici rolüne sahip OLMAYAN kullanıcılar için devre dışı bırakabilirsiniz :
/**
* 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);
}
}
}
Vaka birisi ilgileniyor, ben (yukarıdaki ile aynı yapar) bir yama ekli Dripman 'ın sanal modülü: # 2080739: basitleştirin sadece değişen Dikey sekmeleri devre dışı bırakma yöntemi $form['additional_settings']['#type']
için'fieldset'
.