Generico-Workshop (Fokus: Datenbankabfragen)
Abschnittsübersicht
-
Dies ist der Begleitkurs zum Generico-Workshop, der am 30.04.26 (13:00-15:00 Uhr) virtuell über Zoom stattfinden wird. Andreas Kempka von der FernUni in Hagen wird den Workshop durchführen; das Kompetenzzentrum Moodle.NRW übernimmt die Organisation und Dokumentation.In diesem Kurs könnt ihr euch über den Workshop informieren und euch zu diesem anmelden. Bitte beachtet, dass es nur eine begrenzte Anzahl an Plätzen im Workshop gibt.
Der Kurs gliedert sich wie folgt:
-
Worauf können Teilnehmende sich beim Workshop freuen?Der Generico-Workshop (Fokus: Datenbankabfragen) befasst sich mit dem produktiven Einsatz des Moodle-Textfilters Generico (siehe auch Generico im Moodle Plugins directory). Diese Sitzung befasst sich mit den Möglichkeiten, Moodle-Datenbankabfragen mit Generico durchzuführen. Im Workshop "backen" wir unsere eigenen Rezeptideen für Vorlagen, die in Kursen eingebunden werden können.
Allgemeine Infos zu Generico
Mit Generico lassen sich systemweit Vorlagen definieren, um diese als Bausteine in Moodle-Kursen zu nutzen. Die Vorlagen können Informationstexte, HTML-formatierten Text, CSS Styles, JavaScript und SQL-Datenbankabfragen beinhalten. Generico kann Informationen des Kurses (z.B. Titel, aber auch eigene Kursfelder) und von Studierenden (z.B. Name oder Matrikelnummer) oder andere Datenbankfelder anzeigen, um den Pflegeaufwand von Kursen zu verringern oder eine persönliche Ansprache zu leisten. Beispiele und Inspiration findet ihr in Andreas Präsentation vom Hochschultreffen: Präsentationsfolien der Session "Vereinheitlichung von Moodle-Kursen mit Generico-Vorlagen", die ihr im Abschnitt Linktipps findet.
Fokus dieses Workshops
Im Workshop befassen wir uns knapp mit den Grundlagen von Generico und werden diese Kenntnisse nutzen, um konkrete Ideen umzusetzen. Bitte bereitet vor dem Workshop grobe Skizzen für Vorlagen vor, falls ihr bestimmte Wünsche habt. Mögliche Beispiele als Quelle für Inspirationen wären:
- Einfaches Beispiel: Studierenden im Kurs anzeigen, in welchen Gruppe(n) sie im Kurs angemeldet sind.
- Dynamisch im Kurs auf Aktivitäten mit bestimmtem Namen verlinken (z.B. auf das Klausur-Quiz oder das Nachrichtenforum)
- Studierenden im Quiz-Versuch anzeigen, welche Note sie erhalten haben.
- Studierenden die Notenliste des Kurses mit Punktegrenzen anzeigen.
Falls ihr eigene Ideen habt, könnt ihr diese auch gerne vorab an Andreas senden (E-Mail: andreas.kempka@fernuni-hagen.de), um die Vorbereitung zu erleichtern bzw. vorab die Machbarkeit zu prüfen.
Für das Design von Vorlagen lohnt auch ein vorbereitender Blick auf FontAwesome Icons und Bootstrap. Für Datenbankabfragen sind Kenntnisse der Datenbankstruktur in Moodle (siehe examulator.com) sowie Kenntnisse in SQL von Vorteil. Beispielabfragen können ggf. Im Kurs erarbeitet werden.
Wir freuen uns auf den gemeinsamen "Backkurs"!
-
Hier findet ihr die Zugangsdaten zum Workshop. - Meeting-ID: 698 8365 6221
- Kenncode: 315926
-
Wie werden Generico-Vorlagen erstellt und eingebunden? -
Wie wird Generico verwendet?-
Liste der Kursfelder in Moodle
-
Liste der Nutzerfelder in Moodle
-
Diese Vorlagen können als Inspiration für weitere Vorlagen dienen.Installation:
- Ladet die Vorlagendatei (.txt) herunter.
- ADMIN Wechselt in die Website-Administration eurer Moodle-Instanz in den Bereich der Generico-Vorlagen (https://eure-moodle-instanz.de/filter/generico/genericotemplatesadmin.php
- Wählt eine leere Vorlage
- In der Vorlage zieht ihr die .txt-Datei auf das Icon Bundle - die Informationen aus der .txt-Datei werden in das Formular übertragen
- Speichert nun das Formular
Verwendung im Kurs:
- Wechselt in ein Textfeld, in dem ein Editor zur Verfügung steht (Textfeld, Beschreibung einer Aktivität etc.)
- Klickt im Editor auf den Generico-Button
- Wählt die Vorlage aus
- Füllt ggf. im Formular weitere Optionen aus
- Klickt auf einfügen und speichert das Textfeld
-
- Benutzung:
{GENERICO:type="vorname_nachname"} - Variablen: keine
- Beschreibung: Zeigt den Namen der eingeloggten Person im Format Vorname Nachname an.
- Benutzung:
-
spoiler Datei TXT
- Benutzung:
{GENERICO:type="spoiler"} - Variablen: keine
- Beschreibung: als
class="spoiler"markierte Elemente werden geschwärzt und beim Hover über den Text angezeigt.
- Benutzung:
-
- Benutzung:
{GENERICO:type="alert_options",farbe="danger",icon="exclamation-triangle"}HTML-Code dazwischen eingeben.
Mit{GENERICO:type="alert_options_end"}beenden. - Variablen: werden per Formular abgefragt, z.B. farbe für Hintergrundfarbe, icon für FontAwesome-Icon
- Beschreibung: Zeigt den Namen der eingeloggten Person im Format Vorname Nachname an.
- Benutzung:
-
- Benutzung:
{GENERICO:type="info-box"} - Variablen: keine User-Variablen, aber Variablen aus dem Kurs (@@COURSE:...@@) und zur eingeloggten Person (@@USER:...@@)
- Fügt eine Box mit Infos zum Kurs und der eingeloggten Person ein: In der Box stehen der vollständige Kursname aufgrund der Variable @@COURSE:fullname@@, der Nachname der eingeloggten Person (@@USER:lastname@@) und der Vorname (@@USER:firstname@@). Ein Link verlinkt auf die Kurshauptseite (d.h. auf die Moodle-Adresse mit der Kurs-ID @@COURSE:id@@ des aktuellen Kurses). Es wird auch die Person genannt, die im nutzerdefinierten Kursfeld @@COURSE:betreuung@@ aufgeführt wird. Dieses Kursfeld muss vorher in Moodle erstellt werden.
- Benutzung:
-
Dieses Generico beinhaltet den Code für das obige Beispiel. Zieht es auf das bundle-Feld in der Vorlage und bindet die Vorlage in euren Kurs mit
{GENERICO:type="kategoriename"}oder über das TinyMCE-Plugin ein.
-
-
Erstellt bitte je Idee für eine Generico-Vorlage einen Beitrag im Forum.
- Kommentiert gerne die Vorschläge der anderen (gerne auch im Nachgang).
- Stellt gezielt Fragen, wenn ihr bei der Erstellung nicht weiterkommt.
- Bietet gerne nach Erstellung die .txt-Datei (als Bundle-Export) zum Testen an.
-
Tipps, die euch das Leben mit Generico einfacher machen- Entwickelt zuerst auf einer Testinstanz, bevor ihr auf einer Produktivinstanz damit arbeitet.
- Generico bietet keine Versionierung an. Es wäre sinnvoll, die Entwicklung auf GitLab etc. auszulagern, um die Versionen zu speichern.
- Entwickelt die Vorlage (soweit möglich) zuerst (mit Platzhaltern) in normalen Moodle-Textfeldern im Editor. Übertragt sie dann erst in Generico.
- Vorsicht bei CSS und <style>-Tags: Macht keine Anpassungen an globalen Tags wie <p>, <h4> usw. Diese betreffen dann die ganze Seite, die dann ggf. nicht mehr funktioniert! Erstellt für eure Elemente stattdessen eindeutige Klassen (class="generico-betreuerbox") und ändert das CSS dann nur für diese Klasse.
- Verwendet eine IDE (z.B. Visual Studio Code, um den Code insgesamt zu testen. (In Genericotwo ist ein Editor mit Vorschau eingebaut)
- Haltet die Seite im Backend (z.B. /admin/settings.php?section=filter_generico_templatepage_5) geöffnet, wenn ihr eine Vorlage testet. Solltet ihr die Vorlage soweit zerstört haben, dass die Seite, auf der sie eingebettet ist, nicht mehr funktioniert:
- Speichert euch die Vorlage per Bundle-Button
- Löscht den Inhalt der Vorlage (und CSS und JavaScript)
- Speichert die leere Vorlage, damit die Seite wieder funktioniert
- Untersucht den Code in einer IDE
- Fügt nicht nur Variablen in die Vorlage ein. Kapselt diese in <span class="generico-vorlage"> oder ähnlich. Stellt im Theme-CSS ein, dass die Klasse "generico-vorlage" (bzw. so wie ihr sie benannt habt) für Admins im CSS (z.B. durch einen roten gepunkteten Rahmen) umrandet wird. Damit könnt ihr unterscheiden, was Generico ist und was regulärer Text im Kurs. Schaltet ihr auf eine andere Rolle, verschwinden die Markierungen.
-
Tipps für die Nutzung von Datenbankabfragen- In den SQL-Anweisungen ist als Platzhalter nur
?erlaubt, d.h. keine benannten Platzhalter. - Alle Platzhalter (zu jedem
?) müssen existieren und im Feld Datensatz-Variablen filter_generico | datasetvars_... benannt werden, z. B.@@COURSE:id@@, sonst gibt es eine hässliche Fehlermeldung. - Am Ende der SQL-Abfrage wird kein
;geschrieben. - Verwendet keine URL-Parameter in den Abfragen, um Sicherheitsprobleme zu vermeiden, wie z.B. das Abgreifen von Daten oder Code-Injection
- Bestimmte Stichwörter sind im SQL nicht erlaubt (
LIMIT, INSERT, UPDATE, DROP, ...). - Ihr könnt die Syntax der Datenbankabfragen auch im Plugin Configurable Reports (https://moodle.org/plugins/block_configurable_reports) testen, bevor ihr es in Generico verwendet. Achtet darauf, dass Platzhalter wie ? in den configurable reports nicht funktionieren.
-
Hier findet ihr eine Liste der Tabellen und Felder in Moodle und wie sie miteinander in Verbindung stehen. Zusätzliche Plugins können weitere Tabellen beinhalten.
- In den SQL-Anweisungen ist als Platzhalter nur
-
An dieser Stelle findet ihr weiterführende Informationen und Inspiration dazu, wofür Generico eingesetzt werden kann.-
In seiner Session beim Hochschultreffen des Vereins Moodle an Hochschulen e.V. am 12.03.25 in Potsdam stellte Andreas Kempka von der FernUni in Hagen das Plugin Generico vor und ging dabei auf mögliche Einsatzszenarien und Stolperfallen bei der Erstellung der Generico-Vorlagen ein.
-
Mit diesen in Moodle eingebauten Icons könnt ihr eure Kursvorlagen optisch aufwerten.
Beispiele: https://fontawesome.com/v4/examples/
-
Dies ist die neuere Version von FontAwesome, die mehr Icons enthält. Hier sind die kostenlosen Icons verlinkt.
Tipp: ybertreibt es mit FontAwesome nicht. Zwar sind Animationen, Farben, Überlagerungen usw. möglich. Das kann aber überreizen:
-
Mit Bootstrap (in Moodle integriert) könnt ihr einige ästhetisch ansprechende Gestaltungselemente übernehmen (z.B. Akkordeons, Badges, Buttons,
Tabellen mit Zebrastreifen ... etc.)
-
Mit diesem Editor lassen sich Textfelder (ohne Editor) per Rechtsklick im HTML-Editor Monaco öffnen. Dieser hilft dabei, Tippfehler beim Erstellen von HTML zu vermeiden. Generico Two liefert einen Editor mit.
-
Mit diesem Editor lassen sich Textfelder (ohne Editor) per Rechtsklick im HTML-Editor Monaco öffnen. Dieser hilft dabei, Tippfehler beim Erstellen von HTML zu vermeiden.
-
Hier könnt ihr ad hoc HTML-Code im Browser testen, bevor ihr etwas in Moodle umsetzt. Generico Two bietet bereits eine Vorschau.
-
Falls ihr gerade erst mit Generico beginnt, wäre ein Blick auf das Nachfolgeplugin Generico Two spannend.
Im Video seht ihr das Plugin in Aktion.
Das GitHub Repository findet ihr unter https://github.com/justinhunt/moodle-filter_genericotwo
Zu den spannenden Neuerungen gehören:
- "Unter der Haube" wird das Moodle-eigene Template-System Mustache verwendet. Ihr könnt damit direkt im Template auf viele nützliche Funktionen zurückgreifen, z.B. durch Datenbankergebnisse in einer Schleife durchiterieren, Text filtern. Die Syntax ändert sich minimal.
- Ein Editor ist eingebaut, um bei der Eingabe des Quellcodes zu unterstützen.
- Es gibt im Plugin eine Vorschau der Vorlagen.
Das Plugin ist derzeit noch nicht fertig. Die Migration der alten Vorlagen klappt z.B. nicht ganz fehlerfrei.

Brainstorming