ฉันโพสต์คำตอบของฉันใหม่จาก/programming/8124089/get-value-of-custom-user-field-in-drupal-7-templateที่นี่เนื่องจากฉันคิดว่านี่เป็นทางเลือกอื่น ตัวอย่างนี้แสดงวิธีใช้บางอย่างเช่น field_real_name แทนชื่อผู้ใช้เริ่มต้น
หากคุณใช้ฟังก์ชัน preprocess ไม่จำเป็นต้องดึงใน$user
วัตถุส่วนกลาง คุณสามารถเปลี่ยนสนามในอาร์เรย์ $ ตัวแปรที่เป็นกับสิ่งที่คุณมีในช่องที่กำหนดเองของคุณที่ผมเคยเรียกว่า$variables['name']
field_real_name
คุณสามารถเข้าถึง$variables
อาร์เรย์ได้ดังนั้นคุณสามารถรับข้อมูลผู้ใช้ได้ด้วย - มันจะโหลดข้อมูลที่เกี่ยวข้องกับ uid ( ดู template_preprocess_username ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
หากคุณdpm($account)
(หรือkpr($account)
หากคุณไม่ได้ใช้ devel) คุณจะเห็นว่าคุณสามารถเข้าถึงข้อมูลผู้ใช้ทั้งหมดโดยไม่ต้องใช้$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;
}
}