उपयोगकर्ता प्रोफ़ाइल में कस्टम उपयोगकर्ता फ़ील्ड कैसे छिपाएं?


20

Drupal 7 में, किसी भी गैर-प्रशासनिक उपयोगकर्ता को कस्टम उपयोगकर्ता प्रोफ़ाइल फ़ील्ड को बदलने से रोकने का सबसे अच्छा तरीका क्या है?

मामले का उपयोग करें: मैंने "ग्राहक आईडी" नामक एक उपयोगकर्ता फ़ील्ड बनाई है जो मैं नहीं चाहता कि उपयोगकर्ता (मेरे वास्तविक ग्राहकों में से कोई) बदल जाए। फ़ील्ड मेरे स्वयं के संदर्भ के लिए और अन्य मॉड्यूल में प्रोग्रामेटिक उपयोग के लिए मौजूद है। मुझे ग्राहक आईडी देखकर उपयोगकर्ता को कोई आपत्ति नहीं है, लेकिन उन्हें इसे संपादित करने में सक्षम नहीं होना चाहिए।

क्या मुझे उपयोगकर्ता प्रोफ़ाइल पृष्ठ के लिए पृष्ठ टेम्पलेट को ओवरराइड करना चाहिए? यदि हां, तो फ़ील्ड को केवल पढ़ने योग्य या अदृश्य बनाने के लिए टेम्पलेट को कैसे बदला जाता है?

मदद के लिए आपका बहुत बहुत धन्यवाद!

क्रिस

जवाबों:


17

मुझे लगता है कि फ़ील्ड अनुमतियाँ वह है जो आप खोज रहे हैं। यहाँ इसके बारे में एक उद्धरण है (मॉड्यूल के परियोजना पृष्ठ से):

... साइट व्यवस्थापकों को किसी भी इकाई पर फ़ील्ड संपादित करने, देखने और फ़ील्ड बनाने के लिए फ़ील्ड-स्तरीय अनुमतियाँ सेट करने की अनुमति देता है।

विशेषताएं :

  • किसी भी इकाई पर फ़ील्ड अनुमतियाँ सक्षम करें, न कि केवल नोड्स।
  • भूमिका-आधारित फ़ील्ड अनुमतियाँ जो उपयोगकर्ता के पास पहुँच के आधार पर विभिन्न देखने के पैटर्न की अनुमति देती हैं।
  • लेखक-स्तर की अनुमतियाँ उन फ़ील्ड को देखने और संपादित करने की अनुमति देती हैं, जिनके आधार पर इकाई का स्वामी कौन है।
  • प्रत्येक फ़ील्ड के लिए अनुमतियाँ डिफ़ॉल्ट रूप से सक्षम नहीं हैं। इसके बजाय, व्यवस्थापक इन अनुमतियों को उन फ़ील्ड्स के लिए स्पष्ट रूप से सक्षम कर सकते हैं जहाँ यह सुविधा आवश्यक है।
  • फ़ील्ड अनुमतियाँ अवलोकन

धन्यवाद, notme! मैंने फ़ील्ड अनुमतियाँ मॉड्यूल स्थापित किया है (अल्फा संस्करण नवीनतम है, जो मुझे थोड़ा परेशान करता है, लेकिन जो भी हो), और यह उपयोगकर्ता से फ़ील्ड को छुपाता है जब उपयोगकर्ता अपनी प्रोफ़ाइल को देखता है। मॉड्यूल की सभी सेटिंग्स के साथ प्रयोग करने के बाद, फ़ील्ड को दृश्यमान लेकिन केवल पढ़ने योग्य बनाने का कोई तरीका प्रतीत नहीं होता है। पूर्ण आवश्यकता नहीं है, लेकिन अच्छा होगा।
ctlarsen

दृश्यमान होने के लिए फ़ील्ड सेट करने का मतलब है कि एक टेक्स्टफ़ील्ड को सादे टेक्स्ट के रूप में दिखाया गया है। यदि आप टेक्स्टफील्ड को रखना चाहते हैं और इसे केवल-पढ़ने के लिए सेट करना चाहते हैं, तो मुझे लगता है कि आपको अपने फॉर्म पर एक हुक_फॉर्म_लेटर का उपयोग करना होगा।
पेसिन

धन्यवाद फिर से, notme। मैं hook_form_alter मार्ग ले जाऊंगा और देखूंगा कि मुझे कहां ले जाना है। ऐसा लगता है कि यह जाने का सबसे अच्छा तरीका है।
ctlarsen

मॉड्यूल Field PermissionsDrupal 8 के साथ ठीक काम करता है, लेकिन आप केवल कस्टम फ़ील्ड्स जो मुझे लगता है कि मैं छिपा सकता हूं (मुझे उपयोगकर्ता नाम भी हाइड करने की आवश्यकता है)
Sébastien Gicquel

5

उपयोगकर्ता प्रोफ़ाइल फ़ॉर्म से फ़ील्ड को छिपाने के लिए आप #accessकिसी फ़ील्ड की संपत्ति का उपयोग करके FALSE कर सकते हैं hook_form_FORMID_alter

निम्नलिखित स्निपेट field_organisationगैर-व्यवस्थापक के लिए उपयोगकर्ता प्रोफ़ाइल फ़ॉर्म से फ़ील्ड छुपाता है :

function YOURCUSTOMMODULE_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    $form['field_organisation']['#access'] = FALSE;
  }
}

इसी तरह का प्रश्न ड्रूपाल्वर्स पर भी देखें

आप टेम्प्लेट_परप्रोसेसर_सुपर_प्रिफ़ाइल का उपयोग करके उपयोगकर्ता प्रोफ़ाइल पृष्ठ (प्रपत्र नहीं) से भी फ़ील्ड छिपा सकते हैं

निम्नलिखित स्निपेट field_organisationगैर-व्यवस्थापक के लिए उपयोगकर्ता पृष्ठ से फ़ील्ड छुपाता है :

function YOURCUSTOMMODULE_preprocess_user_profile(&$vars) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    unset($vars['user_profile']['field_organisation']);
  }
}

1

ऐसा लगता है कि एक मॉड्यूल है जिसे http://drupal.org/project/user_readonly कहा जाता है । मॉड्यूल किसी व्यवस्थापक को उपयोगकर्ता खाते / प्रोफ़ाइल फ़ील्ड के संशोधन को रोकने की अनुमति देता है। व्यवस्थापक का चयन कर सकता है कि कौन से फ़ील्ड अस्वीकृत हो जाएंगे, या कौन से फ़ील्ड होंगे। की अनुमति दी। "

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