2011-10-28 60 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