PHPBB将模板变量发送到overall_footer.html

时间:2017-03-28 23:40:10

标签: php template-engine phpbb

由于overall_footer.html由一个不应编辑的核心phpbb文件提供服务,如何在不编辑核心文件的情况下将一些变量发送到模板?

为了更具体一点,我尝试使用overall_footer.html中的注释来执行条件语句,我还需要在我要编辑的任何文件中包含函数文件(functions_chat.php)让这种情况正确发生。

1 个答案:

答案 0 :(得分:0)

因此,对于任何对此答案感到好奇的人来说,似乎页脚实际上是在functions.php文件中生成的。位于 / includes

    function page_footer($run_cron = true, $display_template = true, $exit_handler = true)
{
    global $db, $config, $template, $user, $auth, $cache, $phpEx;
    global $request, $phpbb_dispatcher, $phpbb_admin_path;

    // A listener can set this variable to `true` when it overrides this function
    $page_footer_override = false;

    /**
    * Execute code and/or overwrite page_footer()
    *
    * @event core.page_footer
    * @var  bool    run_cron            Shall we run cron tasks
    * @var  bool    page_footer_override    Shall we return instead of running
    *                                       the rest of page_footer()
    * @since 3.1.0-a1
    */
    $vars = array('run_cron', 'page_footer_override');
    extract($phpbb_dispatcher->trigger_event('core.page_footer', compact($vars)));

    if ($page_footer_override)
    {
        return;
    }

    phpbb_check_and_display_sql_report($request, $auth, $db);

    $template->assign_vars(array(
        'DEBUG_OUTPUT'          => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
        'TRANSLATION_INFO'      => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
        'CREDIT_LINE'           => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited'),

        'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_admin_path}index.$phpEx", false, true, $user->session_id) : '')
    );

    // Call cron-type script
    $call_cron = false;
    if (!defined('IN_CRON') && !$config['use_system_cron'] && $run_cron && !$config['board_disable'] && !$user->data['is_bot'] && !$cache->get('_cron.lock_check'))
    {
        $call_cron = true;
        $time_now = (!empty($user->time_now) && is_int($user->time_now)) ? $user->time_now : time();

        // Any old lock present?
        if (!empty($config['cron_lock']))
        {
            $cron_time = explode(' ', $config['cron_lock']);

            // If 1 hour lock is present we do not call cron.php
            if ($cron_time[0] + 3600 >= $time_now)
            {
                $call_cron = false;
            }
        }
    }

    // Call cron job?
    if ($call_cron)
    {
        global $phpbb_container;

        /* @var $cron \phpbb\cron\manager */
        $cron = $phpbb_container->get('cron.manager');
        $task = $cron->find_one_ready_task();

        if ($task)
        {
            $url = $task->get_url();
            $template->assign_var('RUN_CRON_TASK', '<img src="' . $url . '" width="1" height="1" alt="cron" />');
        }
        else
        {
            $cache->put('_cron.lock_check', true, 60);
        }
    }

这是变量分配给模板的地方

$template->assign_vars(array(
        'DEBUG_OUTPUT'          => phpbb_generate_debug_output($db, $config, $auth, $user, $phpbb_dispatcher),
        'TRANSLATION_INFO'      => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
        'CREDIT_LINE'           => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited'),

        'U_ACP' => ($auth->acl_get('a_') && !empty($user->data['is_registered'])) ? append_sid("{$phpbb_admin_path}index.$phpEx", false, true, $user->session_id) : '')
    );