Estoy volviendo a publicar mi respuesta de /programming/8124089/get-value-of-custom-user-field-in-drupal-7-template aquí, ya que creo que esta es una solución alternativa. Este ejemplo muestra cómo usar algo como field_real_name en lugar del nombre de usuario predeterminado.
Si está utilizando una función de preproceso, no es necesario extraer el $user
objeto global . Puede cambiar el campo en la matriz $ variables que es $variables['name']
lo que tiene en su campo personalizado que he llamado field_real_name
. Tiene acceso a la $variables
matriz, por lo que puede obtener la información del usuario con esto: cargará la información asociada con el uid ( consulte template_preprocess_username ):
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
Si usted dpm($account)
(o kpr($account)
si no está usando desarrollo) verá que tiene acceso a toda la información del usuario, sin usar el $user
objeto global .
Entonces puede cambiar la salida de $variables['name']
ser su field_real_name
como sigue:
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;
}
}