Renderer überschreiben

Renderer überschreiben

by Tobias Marx -
Number of replies: 1

Hi!

Vielleicht kann mir hier jemand auf die Sprünge helfen?

Ich versuche im Boost Theme einen eigenen Renderer zu schreiben.

Zum Testen habe ich die Datei „renderers.php“ angelegt und versucht dort eine Funktion zu überschreiben. Aber alle Änderungen werden einfach ignoriert (ändere ich die ursprüngliche Funktion direkt, dann werden die Änderungen angezeigt. Es ist also schon mal die richtige Stelle ;) ). Die renderers.php wird auch ausgewertet. Wenn ich dort absichtlich einen Syntax-Fehler einbaue, wird die Seite fehlerhaft angezeigt.

Hier die renderers.php:

<?php

defined('MOODLE_INTERNAL') || die();

class theme_boost_core_renderer extends core_renderer {

}

include_once($CFG->dirroot . "/course/renderer.php");

class theme_boost_core_course_renderer extends core_course_renderer {

   /**
    * Renders HTML to display particular course category - list of it's subcategories and courses
    *
    * Invoked from /course/index.php
    *
    * @param int|stdClass|coursecat $category
    */
   public function course_category($category) {
       global $CFG;
       require_once($CFG->libdir. '/coursecatlib.php');
       $coursecat = coursecat::get(is_object($category) ? $category->id : $category);
       $site = get_site();
       $output = '';

<snip>

Vielen Dank!

Average of ratings: -
In reply to Tobias Marx

Re: Renderer überschreiben

by Pia Liersch -

Hallo Tobias,

ich würde dir empfehlen die renderer im Klassen Ordner zu nehmen.
Dort dann schauen, welchen Renderer du für deinen Zweck benötigst - so wie es ausschaut suchst du den core course renderer - also theme/boost/classes/core/course_renderer.php

Versuch dort mal dein Glück.

P.S.: Andere Dateien sollten nicht per require oder include eingebunden werden, es funktioniert unter der aktuellen Moodle Version etwas anders, da sollte möglichst der autoloader verwendet werden.

https://docs.moodle.org/dev/Automatic_class_loading


Viele Grüße

Patrick Liersch