Ich poste meine Antwort von /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template hier neu, da ich denke, dass dies eine alternative Lösung ist. Dieses Beispiel zeigt, wie Sie so etwas wie field_real_name anstelle des Standardbenutzernamens verwenden.
Wenn Sie eine Vorverarbeitungsfunktion verwenden, muss das globale $user
Objekt nicht abgerufen werden. Sie können das Feld im Array $ variables so ändern $variables['name']
, wie Sie es in Ihrem benutzerdefinierten Feld haben, das ich aufgerufen habe field_real_name
. Sie haben Zugriff auf das $variables
Array, sodass Sie die Benutzerinformationen damit abrufen können. Dadurch werden die mit der UID verknüpften Informationen geladen ( siehe template_preprocess_username ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
Wenn Sie dpm($account)
(oder kpr($account)
wenn Sie devel nicht verwenden), werden Sie feststellen, dass Sie Zugriff auf alle Benutzerinformationen haben, ohne das globale $user
Objekt zu verwenden.
Dann können Sie die Ausgabe ändern $variables['name']
Ihre sein , field_real_name
wie folgt:
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;
}
}