ExpressionEngine - >模板包含

时间:2012-03-28 19:57:54

标签: templates expressionengine

ExpressionEngine模板代码:

<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为空时, 我希望它只显示embed title = login的标题模板 $ _SESSION ['loggedin']不是真的。

知道会话变量甚至没有设置,所以它应该显示标题 登录模板,但除此之外没有显示任何内容:

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

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

如果我将home作为segment_1,则会显示带有embed title = welcome。

的标题模板

有更好的方法吗?

1 个答案:

答案 0 :(得分: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:else没有处理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; ?>}