Estou reposicionando minha resposta em /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template aqui, pois acho que essa é uma solução alternativa. Este exemplo mostra como usar algo como field_real_name em vez do nome de usuário padrão.
Se você estiver usando uma função de pré-processo, não há necessidade de puxar o $user
objeto global . Você pode alterar o campo na matriz $ variable que é o $variables['name']
que você tem no seu campo personalizado que eu chamei field_real_name
. Você tem acesso ao $variables
array, para obter as informações do usuário com isso - ele carregará as informações associadas ao uid ( consulte template_preprocess_username ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
Se você dpm($account)
(ou kpr($account)
se não estiver usando o devel), verá que tem acesso a todas as informações do usuário, sem usar o $user
objeto global .
Em seguida, você pode alterar a saída de $variables['name']
para sua field_real_name
como a seguir:
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;
}
}