2012-03-28 92 views
0

ExpressionEngine模板代碼:ExpressionEngine - >模板包含(S)

<div class="container_16"> 
    <div class="grid_16"> 
{if "{segment_1}" == "home"} 
    {embed="include/title" title="welcome"} 
{if:elseif "{segment_1}" == "login"} 
    {embed="include/title" title="login"} 
{if:else} 
<?php 
    if(isset($_SESSION['loggedin'])) { 
    if($_SESSION['loggedin']) { 
?> 
     {embed="include/title" title="welcome"} 
<?php 
    } else {    
?>  
     {embed="include/title" title="login"} 
<?php 
    } 
    } 
?>   
{/if} 
    </div> <!-- grid_16 --> 
</div> <!-- container_16 --> 

我與上面的代碼中遇到的問題是,當segment_1是空的, 我想讓它顯示與標題模板只有當 $ _SESSION ['loggedin']不正確時才嵌入title = login。

知道會話變量甚至沒有設置,所以應該顯示標題 模板與登錄,但它沒有顯示,除了這種事:

<div class="container_16"> 
    <div class="grid_16"> 

    </div> <!-- grid_16 --> 
</div> <!-- container_16 --> 

如果我有回家的segment_1,它顯示嵌入title = welcome的標題模板。

有沒有更好的方法來做到這一點?

回答

1

你不能使用{logged_in}和{logged_out}變量嗎?

無論哪種方式,添加更多的條件:

{if "{segment_1}" == "home"} 
    {embed="include/title" title="welcome"} 
{if:elseif "{segment_1}" == "login" && logged_out} 
    {embed="include/title" title="login"} 
{if:else} 
    {if logged_in} 
    {embed="include/title" title="welcome"} 
    {if:else} 
    {embed="include/title" title="login"} 
    {/if} 
{/if} 

在舊版本的EE的我有問題,與if:其他不工作的LOGGED_IN有條件的,所以你可能只需要更換:

{if logged_in} 
{/if} 
{if logged_out} 
{/if} 

如果您必須使用會話變量,請確保PHP在模板中處於打開狀態,並將解析設置爲EE之前。而你需要稍微改變一下條件:

{if:elseif "{segment_1}" == "login" && "0" == "<?= (isset($_SESSION['loggedin'])) ? "1" : "0"; ?>"} 

雖然你也許可以逃脫這個(你需要測試確認):

... && <?= (isset($_SESSION['loggedin'])) ? true : false; ?>} 
+0

[報價]你能不使用{logged_in}和{logged_out}變量?[/ quote]不,我們沒有使用EE的會員例程。 – MB34 2012-03-29 16:57:09

+0

我在原始文章中添加了一些編輯來涵蓋PHP會話變量的場景。如果您想從您的模板中完全刪除PHP,則可以使用會話插件(http://devot-ee.com/add-ons/session-variables-plugin)來獲取該值。 – 2012-03-30 13:10:21

+0

我已經下載並安裝了會話變量插件。將在今天晚些時候檢查代碼。 – MB34 2012-03-30 16:32:06