【问题标题】:How to change the default region on the page where the block is displayed?如何更改显示块的页面上的默认区域?
【发布时间】:2014-09-02 22:32:38
【问题描述】:
我想在 Moodle 中扩展一个主题,并且想更改问题(在测验中)的显示位置(在页面上) .
我已经看到了我想要扩展的主题的结构。首先,我认为我必须更改包含问题的块的default region(来自$side-pre 和$side-post 等区域),用于布局选项(如@987654325 @、standard、course 等...list of all options 这里)代表测验的页面。
但我找不到代表页面的布局选项
测验中的问题显示在哪里。 有人可以建议
我应该从链接表中选择哪个布局选项,在哪里
我可以简单地更改显示问题的区域
(例如,如果问题显示在 $side-pre 区域中,
我想更改它,使其显示在$side-post
地区)
或者是错误的方法?我是否必须覆盖
问题插件的renderer? 如果是这样,我怎样才能知道是哪个
渲染器的一部分控制问题所在的默认区域
块将被显示?
【问题讨论】:
标签:
php
layout
themes
moodle
renderer
【解决方案1】:
我会使用第二个选项 - http://docs.moodle.org/dev/Overriding_a_renderer#Finding_renderers_to_override
总结
创建一个包含 2 个文件的主题目录
theme/overridetest/config.php
theme/overridetest/renderers.php
在 config.php 中
$THEME->name = 'overridetest';
$THEME->parents = array('standard', 'base');
$THEME->rendererfactory = 'theme_overridden_renderer_factory';
然后在renderers.php中有这样的东西,我不确定要覆盖哪个函数所以选择了view_page作为例子
class theme_overridetest_core_renderer extends core_renderer {
}
include_once($CFG->dirroot . '/mod/quiz/renderer.php');
class theme_overridetest_mod_quiz_renderer extends mod_quiz_renderer {
public function view_page($course, $quiz, $cm, $context, $viewobj) {
$output = '';
// Change the output here.
return $output;
}
}