Moodle扩展/覆盖核心胡须模板

Moodle扩展/覆盖核心胡须模板,moodle,mustache,Moodle,Mustache,如果我在我的主题中扩展一个核心模板(例如blocks.mustache),我如何在其中输出主题数据 我已将模板添加到:theme_name/templates/core/blocks.mustache,并尝试添加一个带有站点名称的简单变量,但它不输出任何数据 有没有办法在不扩展渲染器的情况下执行此操作?编辑:我没有看到关于不扩展渲染器的部分。我已经为其他用户留下了答案,他们正在寻找涉及渲染器的解决方案 您需要创建一个自定义的核心渲染器来扩展核心渲染器。然后重新创建(从核心渲染器类复制)功能块(块

如果我在我的主题中扩展一个核心模板(例如blocks.mustache),我如何在其中输出主题数据

我已将模板添加到:theme_name/templates/core/blocks.mustache,并尝试添加一个带有站点名称的简单变量,但它不输出任何数据


有没有办法在不扩展渲染器的情况下执行此操作?

编辑:我没有看到关于不扩展渲染器的部分。我已经为其他用户留下了答案,他们正在寻找涉及渲染器的解决方案

您需要创建一个自定义的核心渲染器来扩展核心渲染器。然后重新创建(从核心渲染器类复制)功能块(块内容$bc,$region)

然后,您可以将一个变量分配给那里的$data,该变量将在模板中可用

class theme_yourthemename_core_renderer extends core_renderer {
... 
    public function block(block_contents $bc, $region) {
        $this->init_block_hider_js($bc);
        $data = \core\output\block::from_block_contents($bc, $this);

        // Your code here
        $data->yourvar = 'Some val'

        return $this->render_from_template('core/block', $data);
    }
}

如果您只想覆盖扩展子主题内的父主题模板,则:

  • 在主题文件夹名称{yourtheme}/templates/theme{parent\u theme\u name}中创建一个文件夹(例如,如果扩展了boost,请在{yourtheme}/templates/theme\u boost中创建一个文件夹

  • 将要覆盖的mustache文件从父主题复制到此文件夹中。(例如,如果您正在扩展boost,并且希望覆盖header.mustache,则将theme/boost/templates/header.mustache复制到theme/{yourtheme}/templates/theme\u boost/header.mustache,然后对其进行编辑)


  • 谢谢,这真的帮了我的忙!