2011-10-28 34 views
0

我在Expression Engine 2.3中构建了一个使用Solspace的用户和好友模块的用户配置文件系统。他们工作得很好,但是我通过嵌入变量传递难以置信的难度。表达式引擎模板变量传递

我有一个.profile_head模板,从每个模板中调用。个人资料页面,好友页面,私人消息页面等。它建立用户导航,显示头像,所有常见用户的东西。所有这些都基于通过{segment_3}传递的用户ID。这使我可以通过更改此段来显示不同的用户信息。

问题是这样做使我的网址太精确。我不能让用户去/用户,他们必须去/ users/profile/UID或最好的情况是错误页面或重定向到主页。

我想通过我的模板变量来解决这个问题:

{embed="https://stackoverflow.com/users/.profile_head" uid="{segment_3}"} 
or...... 
{embed="https://stackoverflow.com/users/.profile_head" uid="{logged_in_member_id}"} 

.profile_head模板文件,我可以打印出{embed:uid}就好了,但是当我尝试将其分配到任何东西(即环或其他模板),它打破:

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

例如,如果{embed:uid}设置为{logged_in_member_id},我得到以下错误:

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

这是9号线:

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

我真的在我束手无策。我需要能够在模板中使用此配置文件标题,而无需在URL中为用户消息传递和设置页面提供用户标识。但我所尝试的东西似乎一点都没有起作用。

回答

3

我相信{logged_in_member_id}后期分析变量,这意味着它可能不是你的一些标签,在他们处理的点的可用 - 所以它的字面{logged_in_member_id}通过。

尝试使用CURRENT_USER常数。

+0

这是有效的。还有一个问题......在我的嵌入式模板中,我有这个:'Send a Message'。 URI被评估为“http:// mysite.com/users/sendmessage/CURRENT_USER”。有没有办法在那里打印真实的用户ID?我假设'CURRENT_USER'是用于标签和条件而不是打印,是否正确? – jdp

+0

您可以在这种情况下使用'{logged_in_member_id}',因为它不会被评估,只是被打印出来。没有看到完整的嵌入和条件层次结构,很难就应该在哪里使用什么给出明确的答案。它可能会变得棘手。 –

+0

问题是,模板可以使用的唯一引用是用户ID使用的是通过'{embed:uid}'得到的。如果这个嵌入var是'CURRENT_USER',那么这就是我必须要处理的。我不能使用'{logged_in_member_id}',因为我必须在引用当前登录用户以外的用户的页面上使用相同的模板。 – jdp