अतिरिक्त उपयोगकर्ता प्रोफ़ाइल फ़ील्ड तक पहुँचना


9

मैंने उपयोगकर्ता प्रोफाइल का उपयोग करके एक दर्जन या इतने नए क्षेत्र (Drupal 7 में) जोड़े:

कॉन्फ़िगरेशन -> लोग -> खाता सेटिंग -> फ़ील्ड प्रबंधित करें (व्यवस्थापक / कॉन्फ़िगरेशन / लोग / खाते / फ़ील्ड)

मैं इन मूल्यों का उपयोग कैसे कर सकता हूं? वे $ उपयोगकर्ता का हिस्सा नहीं लगते हैं

सफलता के बिना कोशिश की:

global $user;
var_dump($user);

जवाबों:


13

मुझे लगता है मुझे यह मिल गया है। ऐसा लगता है कि एक अतिरिक्त कदम है।

global $user;
$user_full = user_load($user->uid); // user_load(uid) returns the complete array
var_dump($user_full);

अब मेरे पास $ user_full के माध्यम से अपने कस्टम प्रोफ़ाइल फ़ील्ड तक पहुँच है


1

पैनलों को रिश्तों के साथ काफी दर्द रहित तरीके से किया जा सकता है।


0

मैं अपना जवाब /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template से यहां दे रहा हूं क्योंकि मुझे लगता है कि यह एक वैकल्पिक समाधान है। यह उदाहरण दिखाता है कि डिफ़ॉल्ट उपयोगकर्ता नाम के बजाय field_real_name जैसी किसी चीज़ का उपयोग कैसे करें।

यदि आप प्रीप्रोसेस फ़ंक्शन का उपयोग कर रहे हैं, तो वैश्विक $userऑब्जेक्ट में खींचने की कोई आवश्यकता नहीं है । आप $ चर चर में फ़ील्ड को बदल सकते हैं जो कि $variables['name']आपके कस्टम फ़ील्ड में है जिसे मैंने बुलाया है field_real_name। आपके पास $variablesसरणी तक पहुंच है , इसलिए आप इसके साथ उपयोगकर्ता की जानकारी प्राप्त कर सकते हैं - यह यूआईडी से जुड़ी जानकारी को लोड करेगा ( टेम्पलेट_प्रोप्रोसेस_सर्नाम देखें ):

function mythemename_preprocess_username(&$variables) {
    $account = user_load($variables['account']->uid);
    ...more code will go here in a moment
}

यदि आप dpm($account)(या kpr($account)यदि आप उपयोग नहीं कर रहे हैं तो) आप देखेंगे कि आपके पास उपयोगकर्ता की सभी जानकारी तक पहुँच है, बिना वैश्विक $userवस्तु का उपयोग किए ।

फिर आप $variables['name']अपने उत्पादन field_real_nameको निम्नानुसार बदल सकते हैं :

function mythemename_preprocess_username(&$variables) {

  // Load user information with user fields
  $account = user_load($variables['account']->uid);

  // See if user has real_name set, if so use that as the name instead
  $real_name = $account->field_real_name[LANGUAGE_NONE][0]['safe_value'];
  if (isset($real_name)) {
    $variables['name'] = $real_name;
  }
}

0

कुछ अजीब कारणों से, Drupal 7 में प्रोफ़ाइल फ़ील्ड वे नहीं हैं जो वे हुआ करते थे। हालाँकि, उपयोगकर्ता प्रोफ़ाइल ऑब्जेक्ट अतिरिक्त प्रोफ़ाइल फ़ील्ड को सरणी तत्वों के रूप में सुलभ बनाता है। उदाहरण के लिए:

$profile->field_fieldname['und'][0]['value']

उपलब्ध नहीं है, लेकिन यह इस तरह से फिर से लिखे जाने पर काम करेगा:

$user_profile['field_fieldname']['#object']->field_fieldname['und'][0]['value'];

तो मैंने बस अपने कोड में निम्नलिखित किया:

/*
 * Create simplified variables as shortcuts for all fields.
 * Use these variables for read access lateron.
 */
$firstname = $user_profile['field_first_name']['#object']
  ->field_first_name['und'][0]['value'];

$middlename = $user_profile['field_middle_name']['#object']
  ->field_middle_name['und'][0]['value'];

$surname = $user_profile['field_surname']['#object']
  ->field_surname['und'][0]['value'];

$image = $user_profile['field_user_picture']['#object']
  ->field_user_picture['und'][0]['uri'];

बस चीजों को काम करने का एक और तरीका है, बजाय $userवस्तु को फिर से कॉल करने के ।


0

आप Drupal 7 कोर के साथ उपयोगकर्ता डेटा (कस्टम फ़ील्ड शामिल) लोड कर सकते हैं

$user = entity_load($entity_type = "user", $ids = Array($user->uid), $conditions = array(), $reset = FALSE);

Drupal 7> API> इकाई लोड पर अधिक जानकारी

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