Displaying Nodeprofile Fields for a User within a Node
I was banging my head against the wall this weekend trying to remember how to display nodeprofile fields with user information. It's actually really easy and I thought I should write a post about how to do it for the next time I forget.
In this case, I have a content type called 'myuserprofile' that is selected as the content type to use for nodeprofiles. In my myuserprofile content type, I have a field for users to enter their favorite food.
There are two easy ways of displaying this information. First, we can grab and display it within a node. For example, say that I want to display a user's favorite food on a page if that user is logged in. To do so, the following would work:
<?php global $user; //checking if a user is logged in if ($user->uid): //load the nodeprofile user profile for the currently logged-in user //print out the user's favorite food print $profile->field_favorite_food[0]['value']; ?>
A second approach to displaying this information, is to put the following in the _phptemplate_variables function of template.php.
<?php switch ($hook) { case 'node': //checking if a user is logged in if ($user->uid): $vars['favorite_food'] = $vars['profile']->field_favorite_food[0]['value']; endif; break; } return $vars; } ?>
Then, I can display the favorite food information on a page with:
<?php global $user; print $favorite_food; ?>


Post new comment