You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将TPL/PHP登录判断条件转为Twig?求验证现有语法

验证Vanilla Forum Twig模板中登录用户可见面板的语法正确性

我想在Vanilla Forum的Twig文件中添加仅登录用户可见主面板的条件,但只找到TPL和PHP的示例代码,尝试转换为Twig语法均未成功,不确定自己编写的Twig语法是否正确,请求帮忙验证:

我的Twig代码片段

<div class="Frame-details">
    {% if not isHomepage %}
        <div class="Frame-row">
            <nav class="BreadcrumbsBox" aria-label={{ t("Breadcrumb") }}>
                {{ renderBreadcrumbs() }}
            </nav>
        </div>
    {% endif %}
    <div class="Frame-row">

        <!-- Main Content -->
        <section class="Content MainContent">
            {{ renderControllerAsset("Content") }}
        </section>
        <!-- Main Content END -->
        <!-- Main Panel -->
        
        {% if UserSignedIn %}
        <div class="Panel Panel-main">
            {{ renderControllerAsset("Panel") }}
        </div>
        {% endif %}
        <!-- Main Panel END -->

找到的参考示例

TPL(Smarty)示例

{if $User.SignedIn}
Do some coding like show the Panel Asset
{/if}

PHP示例

$Session = Gdn::Session();
if ($Session->IsValid())
{
    Show the Panel Asset
} else
{
    Show only the Guest Box asset
}

语法验证结果

你当前的Twig写法不正确,正确的判断逻辑应该是检查user.SignedIn变量:

修改后的核心代码片段:

<!-- Main Panel -->
{% if user.SignedIn %}
<div class="Panel Panel-main">
    {{ renderControllerAsset("Panel") }}
</div>
{% endif %}
<!-- Main Panel END -->

说明

Vanilla Forum从Smarty模板(.tpl)切换到Twig后,模板变量的命名规则有变化:

  • 原Smarty中的$User.SignedIn对应Twig里的user.SignedIn(小驼峰命名,对象名小写)
  • 这个变量的逻辑和PHP示例中$Session->IsValid()完全一致,都是判断用户是否处于登录状态(会话有效)

内容的提问来源于stack exchange,提问作者Scudo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:39:20