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为空时,只有当$_ title=login‘’loggedin‘不正确时,它才会显示带有嵌入title=login的标题模板。
我知道会话变量甚至没有设置,所以它应该显示带有登录的标题模板,但它没有显示任何内容,只显示以下内容:
<div class="container_16">
<div class="grid_16">
</div> <!-- grid_16 -->
</div> <!-- container_16 -->如果我的主页是segment_1,它会显示带有嵌入title=welcome的标题模板。
有更好的方法吗?
发布于 2012-03-29 12:03:56
不能使用{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; ?>}https://stackoverflow.com/questions/9914724
复制相似问题