सामग्री प्रकार या उपयोगकर्ता की भूमिका द्वारा ऊर्ध्वाधर टैब अक्षम करें


10

कुछ उपयोगकर्ताओं में केवल एक फ़ील्ड को संपादित करने की क्षमता हो सकती है जो नोड एडिट फॉर्म पर ऊर्ध्वाधर टैब में दिखाई देती है। ऐसे मामले में यह ऊर्ध्वाधर टैब का उपयोग करने के बजाय मूर्खतापूर्ण दिखता है क्योंकि चुनने के लिए केवल एक ऊर्ध्वाधर टैब है। स्क्रीनशॉट देखें:

स्क्रीनशॉट

तो, क्या उपयोगकर्ता की भूमिका द्वारा ऊर्ध्वाधर टैब को अक्षम करना संभव है? या, यह रोकते हुए, उन्हें कुछ विशेष प्रकारों के लिए पूरी तरह से अक्षम करें? मेरे उपयोग के मामले के लिए मैं चाहता हूं कि स्थान ऊर्ध्वाधर टैब में प्रदर्शित न हो।

मैंने एक साथ Renderable Fields and Field Group की कोशिश की, लेकिन उन्होंने फॉर्म को गलत तरीके से प्रबंधित किया (छोटी गाड़ी, मुझे लगता है)। अरेंज फील्ड्स वर्टिकल टैब्स को अलग नहीं कर सकते।


क्या आपने कभी इसे ठीक किया? Ubercart उत्पाद टैब के साथ भी ऐसा ही करने की कोशिश की जा रही है।
डीई

जवाबों:


7

ऐसा करने के कुछ तरीके हैं:

  1. आप रेंडर करने योग्य तत्वों के मॉड्यूल का उपयोग कर सकते हैं (जैसा कि आपने ऊपर बताया है)। यह आपको अपनी स्थापना पर बिल्ड के किसी भी टुकड़े को पंजीकृत करने और फ़ील्ड UI के माध्यम से प्रदर्शन का प्रबंधन करने में सक्षम बनाता है। यह मौजूदा संस्थाओं के प्रबंधन रूपों / प्रदर्शन स्क्रीन पर (अतिरिक्त) तत्व उपलब्ध कराएगा या आप उदाहरण के लिए संपर्क फ़ॉर्म को पंजीकृत कर सकते हैं और फ़ील्ड UI के माध्यम से फ़ील्ड को पुनर्व्यवस्थित कर सकते हैं। वर्तमान में रूपों पर ठीक काम करता है, दूसरे के लिए समर्थन एक दूसरी यात्रा में आ रहा है।

  2. या अपने कस्टम मॉड्यूल में निम्नलिखित जोड़ें:

    $config['yourcontenttype_node_form'] = FALSE;
    variable_set('vertical_tabs_forms', $config);
  3. एक सैंडबॉक्स मॉड्यूल जो ऊर्ध्वाधर टैब को निष्क्रिय करता है

यहाँ यह मुख्य मुद्दा है जो इसे संदर्भित करता है।


जैसा कि मैंने सवाल में कहा, रेंडर करने योग्य तत्व मेरे लिए काम नहीं कर रहे हैं। यह अभी भी अल्फा चरण में है और स्थान के साथ एक ज्ञात बग है। तो यह मेरी स्थिति के लिए काम नहीं करता है। अन्यथा, हां, मुझे लगता है कि यह काम करेगा। अगर भविष्य में बग ठीक हो जाता है, तो रेंडर करने योग्य तत्व इस बारे में जाने का सबसे अच्छा तरीका है।
जे

क्षमा करें, मैंने सिर्फ आपके प्रश्न को स्किम्ड किया और रेंडर करने योग्य तत्वों मॉड्यूल के लिए आपके संदर्भ को पूरी तरह से याद किया। कहा जा रहा है, देव संस्करण एक आकर्षण की तरह काम करता है। दे खा कि जा।

हम्म ठीक है। मैं देव संस्करण का उपयोग करने की कोशिश करूँगा अगर कोई अन्य विकल्प नहीं हैं। अभी के लिए इसे खुला छोड़ दिया।
जे

मैंने अपने उत्तर को और अधिक विकल्पों के साथ संशोधित किया है।

1
तुम सही हो। मैं सिर्फ यह कोशिश की और यह डी 7 में काम नहीं करता है जैसा कि डी 6 में किया था। दुर्भाग्य से अगर रेंडर करने योग्य तत्व काम नहीं करते हैं और आपके स्वयं के मॉड्यूल के साथ आराम नहीं करते हैं या सैंडबॉक्स मॉड्यूल का उपयोग करते हैं, तो मुझे यकीन नहीं है कि और क्या है।

6

आप ऊर्ध्वाधर टैब देखने से लोगों को रखने के लिए #access चेक का भी उपयोग कर सकते हैं।

$form['additional_settings']['#access'] = FALSE;

बस इसे जोड़ने के लिए एक हुक फार्म में परिवर्तन या लोडिंग और एक फार्म के बीच में। उसके बाद आप मार्कअप प्राप्त करने के लिए रेंडर ($ फॉर्म) कह सकते हैं।


2

मैंने पहले से उल्लेख किए गए धागे में एक सरल संभव समाधान लिखा: 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'


उत्कृष्ट समाधान, @ Sk8erPeter। मुझे आश्चर्य है कि अगर '#access' = FALSE को सेट किए बिना अतिरिक्त सेटिंग्स को छिपाना संभव है, क्योंकि यह उन मूल्यों को खो देता है जो डिफ़ॉल्ट सेटिंग्स द्वारा सेट किए जाएंगे, जैसे कि url उपनाम और प्रकाशित स्थिति।
Jav

0

रेंडर-सक्षम तत्व वर्तमान में समर्थित नहीं हैं, और प्रोजेक्ट पेज पर स्वीकार करता है कि यह कुछ अन्य योगदान मॉड्यूल के साथ टकराता है इसलिए मैं उत्पादन साइटों के लिए इस पर भरोसा नहीं करूंगा।

इस थ्रेड में वर्टिकल टैब्स को पूरी तरह से डिसेबल कैसे किया जाए, इस पर सवाल है ।

ड्रिपमैन ने ऊर्ध्वाधर टैब को पूरी तरह से अक्षम करने के लिए एक साधारण सैंडबॉक्स मॉड्यूल बनाया है ।

कोडिंग के साथ सगाई के अपने वांछित स्तर के आधार पर, ड्रिपमैन के मॉड्यूल को आसानी से खेतों / भूमिकाओं के आधार पर चयनात्मक होने के लिए अनुकूलन योग्य होना चाहिए।

@Nicoz द्वारा संक्षिप्त जवाब के साथ ओवरलैप के लिए माफी


0

आप मॉड्यूल कार्यक्षेत्र टैब दृश्यता का उपयोग कर सकते हैं ।

यह मॉड्यूल कंटेंट टाइप ऐड / एडिट फॉर्म पर वर्टिकल टैब विजिबिलिटी को मैनेज करने में मदद करता है।

सामग्री प्रकार जोड़ने / संपादित करने के लिए ऊर्ध्वाधर टैब दृश्यता का प्रबंधन करने के लिए। बस /admin/config/user-interface/vertical-tabs-visibility पृष्ठ पर जाएं और सामग्री प्रकार चुनें। नोड ऐड / एडिट फॉर्म में वर्टिकल टैब चेक किए गए कंटेंट टाइप के लिए डिसेबल हो जाएंगे।

वर्तमान में मॉड्यूल सैंडबॉक्स में है


0

मेरे उपयोग के मामले के लिए, मैं एक नोड एडिट फॉर्म पर पब्लिशिंग ऑप्शन सेक्शन पर लगाए जा रहे वर्टिकल टैब को डिसेबल करने की कोशिश कर रहा था (क्योंकि यह एकमात्र ऐसा फील्डसेट था, जिसमें यूजर्स का एक विशेष सेट एक्सेस होता है):

// Place somewhere in MYMODULE_form_alter()...
$form['additional_settings']['#type'] = 'fieldset';
$form['additional_settings']['#collapsible'] = FALSE;
$form['options']['#collapsible'] = FALSE;

स्पष्टीकरण के लिए, आपको न केवल additional_settings #collapsibleFALSE पर सेट करने की आवश्यकता है , किसी भी तत्व के पास #collapsible set toFALSE , in my case that was theविकल्प तत्व भी होना चाहिए ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.