मैंने पहले से उल्लेख किए गए धागे में एक सरल संभव समाधान लिखा: https://drupal.org/node/1048644#comment-7822687 । सुविधा के लिए, मैं इसे यहाँ पेस्ट करूँगा।
वहाँ, बस बदल कर एक फार्म पर अक्षम खड़ी टैब के लिए एक आसान तरीका है $form['additional_settings']['#type']
करने के लिए वेरिएबल का मान 'fieldset'
के एक कार्यान्वयन में hook_form_alter () या hook_form_FORM_ID_alter () , अगर यह करने के लिए बराबर है 'vertical_tabs'
।
आपको एक्सेस सेटिंग्स बदलने या पूरे $form
सरणी को पुनरावृत्ति करने की आवश्यकता नहीं है, बाद वाला अनावश्यक रूप से बहुत अधिक संसाधनों का उपभोग करता है।
(ड्रुपल 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 के सैंडबॉक्स मॉड्यूल: # 2,080,739: सरल बस में बदलाव के साथ कार्यक्षेत्र टैब को अक्षम करने की विधि $form['additional_settings']['#type']
के लिए'fieldset'
।