0
votes

I'm building in Expression Engine 2.3 a user profile system using Solspace's User and Friends modules. They work fine, but I'm having an incredibly difficult time with passing embedded variables around.

I've got a .profile_head template that's called from each template. The profile page, the friends page, the private messaging page, etc. It builds a user navigation, displays the avatar, all the common user stuff. All of this is based off of the user ID passed through {segment_3}. This allows me to display a different user's info by changing this segment.

The problem is doing this makes my URLs far too precise. I can't have users going to /users, they have to go to /users/profile/UID or the best possible scenario is an error page or redirect to the home page.

I tried to solve this problem through variables in my template:

{embed="/users/.profile_head" uid="{segment_3}"}
 or......
{embed="/users/.profile_head" uid="{logged_in_member_id}"}

In the .profile_head template file, I can print out {embed:uid} just fine, but when I try to assign it to anything (i.e. a loop or another template), it breaks:

<!-- /users/.profile_head -->
{exp:friends:members member_id="{embed:uid}" dynamic="off" limit="1"}
 or.....
{embed="users/.profile_column" uid="{embed:uid}"}

For instance, if {embed:uid} is set as {logged_in_member_id}, I get the following error:

Parse error: syntax error, unexpected T_LNUMBER in /var/www/system/expressionengine/libraries/Functions.php(656) : eval()'d code on line 9

This is line 9:

{if logged_in_member_id == "{embed:uid}"} <span class="this_is_you">This is you!</span>{/if}

I really am at my wits end. I need to be able to use this profile header in templates without requiring a user id in the URL for things like the user messaging and settings pages. But nothing I try seems to be working in the least.

1

1 Answers

3
votes

I believe that {logged_in_member_id} is a late-parsed variable, which means it may not be available in some of your tags at the point they're processed - hence it's passed as literally {logged_in_member_id}.

Try using the CURRENT_USER constant instead.