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

PHPBB send template variable to overall_footer.html

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

更具体一点,我正在尝试使用 overall_footer.html 内的注释来做一个条件语句,我还需要在我的任何文件中包含一个函数文件 (functions_chat.php)将进行编辑以使其正确发生。

所以对于任何对此问题的答案感到好奇的人,页脚似乎实际上是在 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) : '')
    );