如何从 html 模板文件中的 PHP 代码访问 phpBB 样式模板变量


How to access phpBB style template variables from PHP codes within html template files?

我想将 phpBB(ver. 3.1.8) 主题样式的 Oauth 登录模板 (/styles/my_style/template/login_body_oauth.html) 修改为如下所示:

<div class="content">
    <!-- BEGIN oauth -->
    <dl>
        <dt>&nbsp;</dt>
                <dd><a href="{oauth.REDIRECT_URL}">
                <!-- PHP -->
                if({oauth.SERVICE_NAME}=='Facebook')
                    echo '<img src="fb.png">';
                elseif({oauth.SERVICE_NAME}=='Google')
                    echo '<img src="google.png">';
                <!-- ENDPHP -->
                </a></dd>
    </dl>
    <!-- END oauth -->
</div>

结果:可捕获的致命错误:传递给 phpbb''template''twig'ode''php::__construct() 的参数 1 必须是 Twig_Node_Text

的实例,给定Twig_Node的实例,在第 35 行的论坛/4_3_1/phpbb/template/twig/tokenparser/php.php 中调用,并在论坛/4_3_1/phpbb/template/twig/node/php.php第 21 行定义

但是,我已经检查了oauth值是否作为数组存储在php数组$context['loops']['oauth']中。因此,循环$context['loops']['oauth']foreach将给出所需的结果。

正确的方法是什么?或任何其他特定于 phpBB 的替代方案?

完成:

<div class="content">
    <!-- BEGIN oauth -->
    <dl>
        <dt>&nbsp;</dt>
                <dd><a href="{oauth.REDIRECT_URL}" class="social_login" title="Login with {oauth.SERVICE_NAME}">
                        <!-- IF oauth.SERVICE_NAME=='Facebook' --><img src="{T_THEME_PATH}/images/login_fb.gif" width="238" height="43" alt="facebook">
                        <!-- ELSEIF oauth.SERVICE_NAME=='Google' --><img src="{T_THEME_PATH}/images/login_google.gif" width="238" height="43" alt="google">
                        <!-- ELSE -->{oauth.SERVICE_NAME}
                        <!-- ENDIF -->
                </a></dd>
    </dl>
    <!-- END oauth -->
</div>