Tôi đang đăng lại câu trả lời của mình từ /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template tại đây vì tôi nghĩ đây là một giải pháp thay thế. Ví dụ này cho thấy cách sử dụng một cái gì đó như field_real_name thay vì tên người dùng mặc định.
Nếu bạn đang sử dụng chức năng tiền xử lý, không cần phải kéo vào $user
đối tượng toàn cục . Bạn có thể thay đổi trường trong mảng $ biến đó là $variables['name']
những gì bạn có trong trường tùy chỉnh mà tôi đã gọi field_real_name
. Bạn có quyền truy cập vào $variables
mảng, vì vậy bạn có thể lấy thông tin người dùng bằng thông tin này - nó sẽ tải thông tin liên quan đến uid ( xem template_pre process_username ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
Nếu bạn dpm($account)
(hoặc kpr($account)
nếu bạn không sử dụng phát âm), bạn sẽ thấy rằng bạn có quyền truy cập vào tất cả thông tin người dùng mà không cần sử dụng $user
đối tượng toàn cầu .
Sau đó, bạn có thể thay đổi đầu ra của $variables['name']
bạn field_real_name
như sau:
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;
}
}