Ponownie publikuję moją odpowiedź z /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template tutaj, ponieważ uważam, że jest to alternatywne rozwiązanie. Ten przykład pokazuje, jak użyć czegoś takiego jak nazwa_pola_realizacyjna zamiast domyślnej nazwy użytkownika.
Jeśli używasz funkcji wstępnego przetwarzania, nie ma potrzeby pobierania $user
obiektu globalnego . Możesz zmienić pole w tablicy $ zmiennych, czyli $variables['name']
na to, co masz w polu niestandardowym, które nazwałem field_real_name
. Masz dostęp do $variables
tablicy, dzięki czemu możesz uzyskać w ten sposób informacje o użytkowniku - załaduje to informacje powiązane z identyfikatorem użytkownika ( patrz nazwa_użytkownika_procesu szablonu ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
Jeśli ty dpm($account)
(lub kpr($account)
jeśli nie używasz devel) zobaczysz, że masz dostęp do wszystkich informacji o użytkowniku, bez użycia $user
obiektu globalnego .
Następnie możesz zmienić dane wyjściowe $variables['name']
na be field_real_name
w następujący sposób:
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;
}
}