Как изменить регион по умолчанию на странице, где отображается блок?

Я хочу расширить тему в Moodle и изменить место (на странице), где отображается вопрос (в викторине).

Я видел структуру темы, которую хочу расширить. Во-первых, я считал, что мне придется изменить default region (из таких регионов, как $side-pre а также $side-post и т. д.) для блока, содержащего вопрос, для варианта размещения (например, front-page, standard, course и т. д.... список всех вариантов здесь), который представляет страницу для викторины.

  1. Но я не могу найти вариант макета, который представляет страницу, на которой отображается вопрос в викторине. Так может кто-нибудь предложить мне из связанной таблицы, какой вариант компоновки выбрать, где я могу просто изменить регион, в котором отображается вопрос(например, если вопрос отображается в $side-pre регион, я хочу изменить его так, чтобы он отображался в $side-postобласть, край)

  2. Или это неправильный путь? Должен ли я переопределить 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;
    }
}
Другие вопросы по тегам