Как изменить регион по умолчанию на странице, где отображается блок?
Я хочу расширить тему в Moodle и изменить место (на странице), где отображается вопрос (в викторине).
Я видел структуру темы, которую хочу расширить. Во-первых, я считал, что мне придется изменить default region
(из таких регионов, как $side-pre
а также $side-post
и т. д.) для блока, содержащего вопрос, для варианта размещения (например, front-page
, standard
, course
и т. д.... список всех вариантов здесь), который представляет страницу для викторины.
Но я не могу найти вариант макета, который представляет страницу, на которой отображается вопрос в викторине. Так может кто-нибудь предложить мне из связанной таблицы, какой вариант компоновки выбрать, где я могу просто изменить регион, в котором отображается вопрос(например, если вопрос отображается в
$side-pre
регион, я хочу изменить его так, чтобы он отображался в$side-post
область, край)Или это неправильный путь? Должен ли я переопределить
renderer
вопрос плагин? Если так, как я могу узнать, какая часть средства визуализации управляет областью по умолчанию, где будет отображаться блок вопроса?
1 ответ
Я бы использовал второй вариант - http://docs.moodle.org/dev/Overriding_a_renderer
В итоге
создать каталог с 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;
}
}