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

时间:2016-03-14 10:53:36

标签: php phpbb phpbb3

我想修改 phpBB(版本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 \ node \ php :: __ construct()的参数1必须是Twig_Node_Text的实例,给出Twig_Node的实例,在forum / 4_3_1 / phpbb中调用第35行的/template/twig/tokenparser/php.php,第21行的forum / 4_3_1 / phpbb / template / twig / node / php.php中定义

但是,我已经检查过 oauth 值是否存储为php数组$context['loops']['oauth']中的数组。因此,遍历foreach的{​​{1}}将提供所需的结果。

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

1 个答案:

答案 0 :(得分:2)

完成:

<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>