অতিরিক্ত ব্যবহারকারীর প্রোফাইল ক্ষেত্রগুলি অ্যাক্সেস করা হচ্ছে


9

আমি ব্যবহার করে ব্যবহারকারী প্রোফাইলে একটি ডজন বা ততোধিক নতুন ক্ষেত্র (দ্রুপাল 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);

Now ব্যবহারকারীর_ফুলের মাধ্যমে আমার এখন আমার কাস্টম প্রোফাইল ক্ষেত্রগুলিতে অ্যাক্সেস রয়েছে



0

আমি আমার উত্তরটি /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template থেকে এখানে পোস্ট করছিলাম যেহেতু আমি মনে করি এটি একটি বিকল্প সমাধান। এই উদাহরণটি দেখায় যে কীভাবে ডিফল্ট ব্যবহারকারীর পরিবর্তে ফিল্ড_রিয়াল_নাম ব্যবহার করা যায়।

আপনি যদি প্রিপ্রোসেস ফাংশন ব্যবহার করেন তবে বৈশ্বিক $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

কিছু অদ্ভুত কারণে, ড্রুপাল 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


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.