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。
的标题模板有更好的方法吗?
答案 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; ?>}