Невозможно переопределить средство визуализации в Moodle - PullRequest
0 голосов
/ 14 июля 2020

Я пробовал следовать документации Moodle о том, как переопределить рендерер, но по какой-то причине он не работает. Вот что я сделал:

  1. Создал папку с именем overridetest в каталоге /theme/.

  2. Создал файл с именем config.php в /theme/ каталог:

<?php

    $THEME->name = 'overridetest';
    $THEME->parents = array('standard', 'base');
    
    $THEME->rendererfactory = 'theme_overriden_renderer_factory';
    
    $THEME->sheets = Array('overridetest');
Создан файл renderers.php в каталоге /theme/:
<?php

    class theme_overridetest_core_renderer extends core_renderer
    {
        public function heading($text, $level = 2, $classes = 'main', $id = null)
        {
            $content = html_writer::start_tag('div', array('class' => 'headingcontainer'));
            $content .= html_writer::empty_tag('img', array('src' => $this->pix_url('headingpic', 'theme'), 'alt' => '', 'class' => 'headingimage'));
            $content .= parent::heading($text, $level, $classes, $id);
            $content .= html_writer::end_tag('div');
            
            return $content;
        }
    }

Создан каталог /theme/overridetest/pix/ и включен образ headingpic.png.

Создан каталог /theme/overridetest/style/ и включен файл с именем overridetest.css:

.headingcontainer .headingimage
{
    float: left;
    margin-right: 1em;
}

.headingcontainer h2,

.headingcontainer h3,

.headingcontainer h4,

.headingcontainer h5,

.headingcontainer h6
{
    text-align: left;
}

Однако, похоже, это не работает. Я что-то не так делаю?

1 Ответ

0 голосов
/ 15 июля 2020

Вероятно, это связано с используемой вами версией Moodle. Метод, который вы здесь показали, работает для более старых версий Moodle (ниже 2.8, согласно документации).

Для более новых версий вам необходимо переопределить средства визуализации в ваших плагинах. В вашем случае вы можете переопределить его в своей собственной теме, если вы используете собственную.

Допустим, вы создали свою собственную тему под названием mycustomtheme (проще всего создать Повышение дочерней темы https://docs.moodle.org/dev/Creating_a_theme_based_on_boost).

Вы можете переопределить функцию заголовка, выполнив следующие действия:

  • установите свой mycustomtheme плагин (посетив домашнюю страницу при входе в систему как администратор)
  • зарегистрируйте mycustomtheme в качестве основной темы в Администрирование сайта> Внешний вид> Темы> Выбор темы
  • поворот в режиме редактора тем (в Администрирование сайта> Внешний вид> Темы> Настройки темы )
  • создайте файл с именем core_renderer.php в /theme/mycustomtheme/classes/output/
<?php

namespace theme_mycustomtheme\output;

use html_writer;

defined('MOODLE_INTERNAL') || die;

class core_renderer extends \core_renderer {
    public function heading($text, $level = 2, $classes = 'main', $id = null) {
        $content = html_writer::start_tag('div', array('class' => 'headingcontainer'));
        $content .= html_writer::empty_tag('img', array(
                    'src' => $this->image_url('headingpic', 'theme'), 
                    'alt' => '', 'class' => 'headingimage'));
        $content .= parent::heading($text, $level, $classes, $id);
        $content .= html_writer::end_tag('div');
        return $content;
    }
}
...