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

时间:2017-05-19 20:29:35

标签: moodle mustache

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

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

有没有办法在不扩展渲染器的情况下这样做?

2 个答案:

答案 0 :(得分:2)

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

您需要创建一个扩展core_renderer的自定义核心渲染器。然后重新创建(从core_renderer类复制)功能块(block_contents $ 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);
    }
}

答案 1 :(得分:2)

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

  1. 在主题文件夹名称{yourtheme} / templates / theme_ {parent_theme_name}中创建一个文件夹(例如,如果您扩展了boost,则在{yourtheme} / templates / theme_boost

  2. 中创建一个文件夹
  3. 将要覆盖的小胡子文件从父主题复制到此文件夹中。 (例如,如果您扩展增强功能,并且想要覆盖header.mustache,然后将theme / boost / templates / header.mustache复制到theme / {yourtheme} /templates/theme_boost/header.mustache然后进行编辑)