Obtenir la valeur de la coutume champ utilisateur dans Drupal 7 modèle?
Je suis en train de construire mon premier site avec drupal. Et j'ai fait une coutume champ utilisateur: nom Complet.
Maintenant, je veux récupérer la valeur de ce fild dans mon template pour dire “Bonjour, %username%”.
Comment dois-je faire?
Vous devez vous connecter pour publier un commentaire.
En fonction de votre configuration/un nom de champ, quelque chose comme cela dans
template.php
(prétraitement de fonction pour le fichier de modèle):Alors quelque chose comme ceci dans
page.tpl.php
:Noter que
LANGUAGE_NONE
peut-être besoin d'être changé si vous utilisez un site multilingue.$account = user_load($uid);
, je ne reçois que des tableaux vides au lieu de les champs personnalisés:$account->pwyw_balance
est juste un array (), sans contenu. Faire des champs personnalisés doivent être chargés avec du code supplémentaire? La même chose arrive lorsque je charge l'utilisateur à l'aide de$wrapper = entity_metadata_wrapper('user', $account)->value()
.$wrapper['pwyw_balance']
est un tableau vide.Clive réponse est bonne, sauf que vous devez utiliser
field_get_items
pour obtenir les valeurs d'un champ. Il prendra en charge la langue pour vous. Vous devez également désinfecter la valeur.Si votre site utilise le Entity API module, vous pouvez également utiliser une entité métadonnées wrapper comme ce
Voir aussi Écrit robuste code qui utilise les champs, dans Drupal 7
$
signe dans leentity_metadata_wrapper()
appel doit être$user
au lieu deuser
Je sais que cette question a été posée il y a si longtemps, mais je voulais poster une alternative. Il semble que vous souhaitez modifier dans le champ à $variables de tableau qui est
$variables['name']
à ce que vous avez dans votre champ personnalisé que j'ai appeléfield_real_name
. Si vous utilisez un prétraitement de la fonction, il n'y a pas besoin de tirer dans le global$user
objet. Vous avez accès à la$variables
tableau, de sorte que vous pouvez obtenir les informations de l'utilisateur avec ce - qu'il va charger les informations associées à l'uid (voir template_preprocess_username):Si vous
dpm($account)
(oukpr($account)
si vous n'utilisez pas devel), vous verrez que vous avez accès à toutes les informations de l'utilisateur, sans l'aide de la global$user
objet.Ensuite, vous pouvez changer la sortie de
$variables['name']
à votrefield_real_name
comme suit:Nous pouvons ajouter le code ci-dessous n'importe où dans le fichier de modèle.