Eines der beliebtesten
Web-Contentmanagementsysteme ist im Moment Wordpress. Hier erfährst Du, wie Du ein eigenes Template für dieses CMS erstellst. In den
Übungen wird eine konventionell erstellte Website in ein
Wordpress-Theme umgewandelt. Typische Blog-Funktionalitäten wie
Beiträge von Nutzern oder Kommentare bleiben zunächst außen vor und
werden erst später nachgerüstet.
Für welche Projekte ist Wordpress geeignet
Wordpress aufsetzen
Beliebte Fehler
Theme Grundlagen
Templates verstehen
Das Theme erweitern
Seiten erstellen und Konfigurieren der
Website
Das Theme fertig stellen
Vorlagen für die Themeerstellung
PlugIns nutzen
Sicherheit
Contentmanagementsysteme im Vergleich
Aufgaben
Literaturhinweise und Links
Zunächst schauen wir, in welchen Fällen der Einsatz eines Web-CMS Sinn macht. Welche Technik sollte man bei einem neuen Webprojekt einsetzen, ein Contentmanagementsystem, die Seiten selber von Hand erstellen oder vielleicht doch einfach den Homepagebaukasten vom Provider? Die Frage lässt sich nicht pauschal beantworten. Manche Websitebetreiber haben die Vorstellung, dass mit dem Einsatz eines CMS der Entwicklungsaufwand für die Website erheblich vereinfacht wird. Will man aber nicht auf ein vorgefertigtes Theme zurückgreifen und möchte man individuelle Anpassungen oder ein eigenes Design umsetzen, sollte man den Aufwand korrekt einschätzen können. Denn ohne solide Kentnisse in Webdesign, HTML, CSS und verwandten Techniken wird man solche Anpassungen oder ein eigenes Design bzw. eigenes Wordpress-Theme nicht realisieren können. Lass uns die verschiedenen Lösungsmöglichkeiten vergleichen.
Homepagebaukästen wie wix.com , Strato oder andere sind nur für diejenigen eine Alternative, die sich mit HTML und CSS überhaupt nicht auskennen, die mit fertigen Designs zufrieden sind und preiswert zum eigenen Webauftritt kommen wollen. Alle anderen – und das ist hoffentlich die Mehrzahl ;-) sollten ihren Webauftritt mit eigenen CSS- und Javascript-Frameworks oder mit einem Contentmanagementsystem realisieren.
Möchte der Kunde seinen Webauftritt selber pflegen, ist ein CMS sicherlich die beste Wahl, es sei denn, der Kunde verfügt über grundlegende Kentnisse in HTML. Wenn man darüber hinaus ein Theme findet, dass den Kunden-Vorstellungen komplett entspricht, vereinfacht das natürlich den Designprozess. Letztendlich kommt es auch auf die Erfahrung und die Lieblingswerkzeuge der Agentur an. Die Umsetzung eines Webprojekts mit einem CMS sollte ein Webdesigner aber auf jeden Fall anbieten können. Lass uns also einen Blick auf das Erstellen eines eigenen Themes für Wordpress werfen …
Voraussetzung für den Betrieb eines Contentmanagementsystems ist ein laufender Webserver mit einer Skriptsprache wie PHP und einem DBMS (Datenbankmangementsystem) wie MySQL, MariaDB, Oracle oder ähnlichem. Nützlich ist eine Administrationsoberfläche für das DBMS wie phpMyAdmin. Außerdem sollten auf dem Webserver Module und Bibliotheken wie zum Beispiel GD und ImageMagic (für Bildbearbeitungsfunktionen), Curl (für BackUp-Funktionen) oder mod_rewrite (für die Permalinks) laufen. In den meisten Webhostingpaketen ist das alles enthalten. Aber zum Entwickeln und Testen eines Wordpress-Projekts sollten wir eine lokale Entwicklungsumgebung oder einen Testserver zur Verfügung haben. Lokal auf dem eigenen Rechner lässt sich so eine Umgebung relativ einfach mit XAMPP (http://www.apachefriends.org/de/index.html aufsetzen).
Wenn der lokale Webserver läuft, wird Wordpress installiert:
Erstelle eine neue Datenbank
für Deine Wordpressprojekte, das geht komfortabel mit
phpMyAdmin.
Ein sinnvoller Name für die neue Datenbank wäre z.B.
„WordpressProjekte“ oder „Projekt-xyz“. Die Kollation/Zeichensatz
sollte auf utf8_general_ci beziehungsweise utf8_unicode_ci gestellt
werden. Notiere Dir den Namen dieser Datenbank sowie einen
Benutzernamen und Passwort für das MySQL-Datenbankmanagementsystem.
Erstelle ggf. für Deine Wordpress-Projekte einen eigenen Benutzer
in MySQL. Du kannst zu Testzwecken auch eine einzige Datenbank für
mehrere Wordpress-Projekte nutzen.
Lade Wordpress von http://de.wordpress.org
oder https://wordpress.org/download
(im Dezember 2015 war die Version 4.4 aktuell) auf Deinen lokalen
Testserver (z.B. in das Verzeichnis htdocs im XAMP-Verzeichnis oder
unter Linux beispielsweise in das Verzeichnis
/var/www/html/WordpressTest) und entpacke dort das Zip-Archiv.
Falls Du bei den folgenden Installationsschritten auf Fehlermeldungen
stößt, musst Du in diesem Verzeichnis ggf. noch die Verzeichnis- und Dateirechte per FTP, Dateibrowser oder
Terminal anpassen, sowie den Eigentümer der Dateien auf den Benutzernamen des Webservers-Prozesses (unter Linux z.B. „www-data“)
ändern.
Du kannst nun das Wordpressverzeichnis im Browser aufrufen. Allerdings per Webserver (http://localhost/WordpressTest/wordpress/) und nicht über das Dateisystem (file:///var/www/html/WordpressTest/wordpress), sonst funktionieren die nächsten Schritte nicht. Du wirst jetzt durch den Installationsprozess geführt. Falls Du an dieser Stelle eine Fehlermeldung bekommst, dass die Datei wp-config nicht geschrieben werden konnte, kann das an falschen Zugriffsrechten liegen. Korrigiere die Rechte (siehe oben) oder erstelle die wp-config.php manuell und setze die Installation fort. Notiere Dir den Benutzernamen und das Passwort des soeben erstellten Wordpress-Benutzers. Dieser Benutzer hat die Admin-Rolle in Deiner Wordpress-Installation.
Melde Dich mit den notierten Zugangsdaten in Deinem neuen
Wordpress an.
Eine gute Idee ist es, zuerst Wordpress-Updates und grundlegende
PlugIns wie ThemeCheck
oder ein BackUp-PlugIn
zu installieren. Vielleicht legst Du auch schon mal beispielhafte
Inhalte für Dein neues Projekt an.
Bevor Du weiter machst, solltest Du Dich mit den Redakteursarbeiten
in Wordpress vertraut machen, Inhalte wie neue Seiten erstellen und
bearbeiten oder die mit Wordpress mitgelieferten Themes (Designs)
ausprobieren.
Redakteursarbeiten in Wordpress: http://www.reetdachhaus-puddemin.de/wp-content/uploads/2014/01/wp-38-autoren-redakteure.pdf
Detaillierte Infos zur Wordpress-Installation: https://codex.wordpress.org/Installing_WordPress.
Probleme, die bis hier aufgetaucht sein könnten (z.B. wenn beim
Aktualisieren oder Installieren von PlugIns nach FTP-Zugangsdaten
gefragt wird), liegen häufig an falschen Zugriffsrechten.
Hier ist es hilfreich, wenn Du Dich mit grundlegenden UNIX-Befehlen
auskennst und keine Angst vor der Komandozeile hast. Ein Editor, der
Text-Dateien nicht in utf-8
speichert, kann dazu führen, dass PHP-Anweisungen nicht funktionieren.
Auch muss man erstmal das Verzeichnis
des lokalen Webservers finden, in dem Wordpress installiert
werden kann.
Hilfe bei solchen Fragen findest Du unter anderem im Forum unter http://forum.wpde.org/.
Siehe auch http://www.drweb.de/magazin/die-gangigsten-wordpress-fehler-mit-losungen
und http://www.drweb.de/magazin/wordpress-so-vermeiden-sie-die-20-haeufigsten-fehler-48330.
Die mitgelieferten Themes (Designs) gefallen nicht so recht? Kein Problem, erstell Dir doch Dein eigenes Theme :-) Vorausgesetzt, Du knnst Dich gut mit CSS und HTML aus und hast grundlegende Kentnisse in PHP und JavaScript, sollte dem eigenen Theme nichts im Weg stehen. Ein guter Einstieg in die Themeerstellung ist das offizielle englischsprachige Wordpress-Handbuch unter https://developer.wordpress.org/themes/getting-started. Oder natürlich die folgenden Übungen …
Im Folgenden wird Wordpress als CMS für eine Website ohne Blogfunktionen genutzt. Blog-typische Funktionen wie das Erstellen und Kommentieren von Blog-Posts oder das Anzeigen eines Blog-Archivs bleiben erst mal außen vor.
Um ein neues Theme zu erstellen, legst Du in Deinem Wordpressverzeichnis erstmal einen neuen Ordner unter /wp-content/themes/ an. Ein guter Name wäre zum Beispiel „Schulungstheme“. Wir brauchen in dem neuen Ordner zumindest zwei Dateien: index.php und style.css, siehe die Beispieldateien im Verzeichnis „Schulungstheme-Schritt_01“ im Material-Ordner dieses Kurses. Für unseren Zweck brauchen wir noch die Datei page.php. Lege die drei Dateien mit einem Editor Deiner Wahl an.
Die style.css wird benötigt, um dem Theme zumindest einen Namen zu geben. Ohne diese Datei kann das Theme nicht im Backend (in der Administrationsoberfläche von Wordpress) aktiviert werden. Die style.css im Schulungstheme-Ordner ist zunächst sehr übersichtlich gehalten, später wird sie erweitert.
Die zweite Datei, page.php sorgt dafür, dass Inhalte aus der Datenbank mit einem Template zusammengeführt und im Browser überhaupt was angezeigt werden kann. Dazu dient der der sogenannte „Loop“. Eine sehr einfache page.php (siehe Datei „page-01-nur Loop.php“) würde wie folgt aussehen:
Außerdem braucht jedes Theme noch eine index.php, ohne die ein Theme
nicht aktiviert werden kann. Diese Datei kann zunächst leer bleiben.
Damit kann das Theme schon mal im Frontend (also für den Besucher
unserer Website) eine Seite anzeigen – vorausgesetzt es gibt Inhalte.
Falls nicht, erstelle bitte eine neue Seite im Backend über
Seiten › Erstellen. Nach dem Veröffentlichen der Seite kannst Du Dir Dein Werk im Frontend anschauen.
Okay, die Navigation funktioniert noch nicht und das ganze sieht noch
ziemlich spartanisch aus, aber es besteht Hoffnung. Lass uns die
Datenbank-Inhalte in eine etwas komplexere Vorlage einbinden. Als
nächsten Schritt für die page.php in unserem Theme-Ordner verwende ich
nun die statische Webseite index.html aus der Bonavivo-Aufgabe, siehe
Ordner „Schulungstheme-statische_Vorlage“. Dort, wo der vom Redakteur
veränderbare Inhalt im Template erscheinen soll, wird jetzt der Loop
(siehe oben) eingebaut.
Tipp: anstatt die schon relativ komplexe Bonavivo-Vorlage für die
Übungen als Vorlage zu nehmen, kannst Du die folgendengerne Schritte
auch mit einem eigenen, einfacherem Screendesign nachvollziehen.
<?php get_header(); ?>
.<?php get_sidebar(); ?>
und <?php get_footer(); ?>
.Im nächsten Schritt werden noch die Pfade zu CSS-Dateien, Skripten
und anderen verknüpfte Dateien mit dem Template Tag <?php
echo esc_url( get_template_directory_uri() ); ?>
angepasst. So wie in der statischen Vorlage funktionieren die Pfade
nämlich nicht.
Template Tags werden genutzt, um Inhalte aus der Datenbank (oder um
andere Theme-Dateien) zu laden. Ein Template Tag besteht aus einem PHP
code tag, einer WordPress Funktion und optionalen Parametern.
Gebräuchliche Template Tags sind z.B. get_header();
, get_template_directory_uri();
oder get_stylesheet_directory_uri();
. Siehe https://developer.wordpress.org/themes/basics/template-tags
und https://codex.wordpress.org/Template_Tags.
Du findest die oben beschriebenen Schritte im Ordner Schulungstheme-Schritt_02.
Die sidebar.php bleibt zunächst leer. Wirf auch einen Blick auf
die Datei style.css, sie enthält jetzt weitere Informationen.
Auch eine Datei screenshot.png sollte im Themeordner nicht fehlen. Sie
wird als Vorschau in der Themeauswahl angezeigt.
Öffne für die folgenden Schritte den Ordner „Schulungstheme-Schritt_03“.
Die Navigation in unserem Beispiel funktioniert noch nicht, da sie
auf nicht existierende Inhalte verweist. In unserem Theme sollte das
Menü auch nicht fest verdrahtet sein, sondern vom Redakteur verändert
und an neu erstellte Seiten angepasst werden können. Um ein von
Wordpress generiertes Menü in der Website anzuzeigen, kommt in die
Datei header.php bzw. in das entsprechende Template der Code: <?php
wp_nav_menu( array( 'menu' => 'header-menu' ) ); ?>
an die Stelle, wo in der bisherigen Vorlage das statische Menü
angezeigt wurde. Siehe header.php im Verzeichnis
Schulungstheme-Schritt_03.
In der (neu zu erstellenden) Datei functions.php wird außerdem der folgende Code integriert, damit Menüs im Backend von Wordpress überhaupt angelegt werden können:
Eine gute Erklärung zur Integration von mehreren Menüs in Wordpress
findest Du auf: http://www.krause-webkonzepte.de/eigenes-menu-registrieren-in-wordpress.
Beispiele für unterschiedliche Implementierungen von Menüs siehe http://codex.wordpress.org/Function_Reference/wp_nav_menu#Examples.
Weitere Hinweise zu dem Thema siehe auch https://developer.wordpress.org/themes/functionality/navigation-menus
und natürlich die Beispiele in den Schulungstheme-Schritten.
Mit Hilfe der Datei functions.php lässt sich das Theme um diverse
Fähigkeiten und Funktionen erweitern. Zum Beispiel um eine Navigation
(wie oben beschrieben), einen RSS-Feed, eine Internationalisierung für
mehrsprachige Themes oder ein benutzerdefiniertes Hintergrundbild zu
erstellen.
Im Schulungstheme-Schritt_04
siehst Du, dass jetzt im Backend ein solches benutzerdefiniertes
Hintergrundbild ausgewählt werden kann. Um das zu erreichen, steht in
der functions.php die Anweisung <?php
add_theme_support('custom-background'); ?>
. Außerdem
braucht der Body-Tag noch eine Ergänzung: <body <?php
body_class( $class ); ?>>
, damit das Hintergrundbild
angezeigt wird. Siehe Datei page.php.
Weitere Beispiele für eine functions.php findest Du unter https://developer.wordpress.org/themes/basics/theme-functions.
Solche Funktionen lassen sich ggf. auch als themeübergreifendes PlugIn realisieren. Ein Lösung als PlugIn hätte den Vorteil, dass bei einem Themewechsel in der Website die Funktionalitäten erhalten bleiben.
Bislang haben wir ausschließlich die page.php verwendet, um die Inhalte der Datenbank auszugeben. Aber Wordpress kann für unterschiedliche Inhalte spezifische Templates nutzen.
Wordpress war ursprünglich als Blog-CMS entwickelt worden. Für
Blog-typische Inhalte wie Posts,
Blog-Einträge und Kommentare sind Templates wie single.php,
archive.php oder category.php vorgesehen.
Templates
für einzeln angelegte Seiten (sozusagen statische Posts) sind
Dateien wie page.php,
page-{slug}.php (z.B. page-produkte.php oder page-test.php) oder auch
page-{id}.php zuständig. Falls Du zum Beispiel eine Seite mit dem
Titel „test“ erstellt hast, wird diese durch ein Template namens
„page-test.php“ gerendert.
Weitere Templates, die Wordpress automatisch erkennt, findest Du unter
https://developer.wordpress.org/themes/basics/template-files/#common-wordpress-template-files.
Erst wenn kein anderes spezifisches Template für einen Inhalt gefunden
wird, greift Wordpress auf die index.php zurück; siehe https://developer.wordpress.org/themes/basics/template-hierarchy.
Du kannst aber auch eigene globale Templates erstellen. Beim Bearbeiten einer Seite kannst Du unterschiedliche Vorlagen auswählen, sofern Du welche angelegt hast. Du erstellst ein neues globales Template, indem Du in Deinem Theme-Ordner eine neue Datei abspeicherst (z.B. mit dem Namen „template-sitemap.php“), die mit folgendem Code startet.
Natürlich muss diese Datei noch entsprechend aufbereitet und mit Loops
etc. versehen werden, um Inhalte anzeigen zu können.
Ordne Deine Dateien in Verzeichnissen wie:
css
inc (include-Dateien)
js
languages (falls das Theme internationalisiert werden soll)
Siehe auch https://developer.wordpress.org/themes/basics/linking-theme-files-directories/#linking-to-core-theme-files.
Das Theme ist schon ganz brauchbar, aber Wordpress hat noch mehr zu bieten. Die folgenden Erweiterungen des Themes findest Du als Beispieldateien im Ordner Schulungstheme-Schritt_04.
Mach die Sidebar widgetfähig, siehe https://developer.wordpress.org/themes/functionality/sidebars und die Dateien functions.php und sidebar.php im aktuellen Theme Ordner.
Versehe Dein Theme mit Funktionalitäten wie individuellen Kopfbereiche oder anderen Funktionen siehe https://developer.wordpress.org/themes/functionality. Nutze die body_class()
function <body <?php body_class(); ?>>
,
um Information wie die ID der Seite oder das verwendete Template
auswerten zu können (zum Beisppiel bei CSS-Anweisungen, die nur für
eine Seite mit einer bestimmten ID angewendet werden sollen). Beim
Einbinden eines benutzerdefinierten Hintergrundbildes hast Du die
body_class() schon angewendet.
Füge dem header Metainformationen wie description und keywords hinzu. Dazu braucht der header den Code
<meta name="description" content="<?php if(get_post_meta($post->ID, "description", true) !='' ) echo get_post_meta($post->ID, "description", true); else bloginfo('description');?>" />
Im Backend musst Du außerdem die entsprechenden Benutzerdefinierten Felder anlegen, siehe http://www.pas-solutions.ch/wordpress/wordpress-description-und-keywords-ueber-benutzerdefinierte-felder-einfuegen.
Baue eine Suchfunktion siehe https://codex.wordpress.org/Creating_a_Search_Page
und http://wordpress.lernenhoch2.de/handbuch/eigenes-wordpress-template-erstellen/schritt-2/search-php-unsere-eigene-kleine-blogsuche
ein.
Baue blogtypische Funktionen wie die Möglichkeit für angemeldete
Nutzer Beiträge zu posten, die Meta-Angabe pingback_url für die
Kommunikation zwischen Blogs, ein Archiv der bisherigen Beiträge oder
eine Kommentarfunktion
bzw. http://wordpress.lernenhoch2.de/handbuch/eigenes-wordpress-template-erstellen/schritt-2/comments-php
ein. Siehe http://wordpress.lernenhoch2.de/handbuch
und die Beispieldatein im Ordner Schulungstheme-Blog.
Verwende die in Wordpress eingebauten JavaScript-Bibliotheken anstatt eigener Skripte.
Bereite Dein Theme für verschiedene Sprachen auf.
Auch eine 404 Seite wäre nicht verkehrt.
Erstelle eine Sitemap mit der Funktion wp_list_pages: http://codex.wordpress.org/Function_Reference/wp_list_pages; verwende für diese Seite ein eigenes Template, das Du über
erzeugst. Wer das lieber über ein PlugIn lößt, wird auf https://de.wordpress.org/plugins/simple-sitemap fündig.
Lass den Benutzer das Theme selber anpassen mit dem theme-customizer.
Modifiziere ein bestehendes Theme mit Hilfe eines eines Childthemes.
Erweitere die functions.php mit neuen Funktionen; siehe http://www.drweb.de/magazin/20-unverzichtbare-code-schnipsel-fuer-die-functions-php-oder-das-seitenplugin-68064.
Erstelle ein universelles PlugIn, statt Erweiterungen in die functions.php zu schreiben: http://www.drweb.de/magazin/wordpress-mit-eigenem-plugin-nutzen-68058.
Installiere das PlugIn Theme
Check um Dein erstelltes Theme zu testen. Setzte WP_DEBUG in
der Datei wp-config.php auf true. Weitere Infos zum Testen siehe https://developer.wordpress.org/themes/release/testing,
https://themetest.wordpress.com
oder https://codex.wordpress.org/Theme_Unit_Test.
Setze nach den Tests abschließend in der Datei wp-config.php
WP_DEBUG wieder auf false.
Sicher das Theme ab siehe http://codex.wordpress.org/de:WordPress_absichern
und https://developer.wordpress.org/themes/advanced-topics/theme-security.
Erstelle eine Dokumentation Deines Themes in einer readme-Datei.
Verpacke das Theme in einer Zip-Datei, um es auf andere
Wordpress-Installationen hochzuladen.
Du kannst Dein Theme wenn es gelungen ist, auch auf https://wordpress.org/themes/upload
hochladen und der Allgemeinheit zur Verfügung stellen.
Um sich die Arbeit zu erleichtern, kannst Du auch auf fertige Theme-Gerüste wie http://underscores.me oder andere Starter-Themes (http://www.drweb.de/magazin/wordpress-themes-erstellen-leicht-gemacht-mit-starter-themes-59504/) aufbauen. Aber man muss erstmal die grundlegenden Konzepte der Themeerstellung verstanden haben, um mit solchen Frameworks erfolgreich arbeiten zu können.
Ein Grund für die Beliebtheit von Wordpress ist die Vielzahl an
PlugIns. Hier eine Auswahl einiger empfehlenswerter PlugIns.
Das wichtigste PlugIn für eine Kunden-Website ist ein BackUp-Tool, wie
UpdraftPlus (https://de.wordpress.org/plugins/updraftplus),
es sollte in keiner Produktionswebsite fehlen.
Block Bad Queries/BBQ (https://wordpress.org/plugins/block-bad-queries)
dient der Abwehr von Hackerattacken.
Post Snippets, eignet sich, um vorgefertigte Codeblöcke im Editor
einzufügen (http://www.drweb.de/magazin/post-snippets-wordpress-plugin-66758).
Für mehrsprachige Projekte hat sich qTranslate X (https://wordpress.org/plugins/qtranslate-x)
bewährt.
Theme Check (https://de.wordpress.org/plugins/theme-check)
ein Werkzeug für die Themeentwicklung.
Broken Link Checker (https://de.wordpress.org/plugins/broken-link-checker)
um defekte Links aufzuspüren.
TinyMCE Advanced (https://de.wordpress.org/plugins/tinymce-advanced)
bohrt den Editor auf.
WP Display Header (https://de.wordpress.org/plugins/wp-display-header)
ermöglicht eine benutzerdefinierte Kopfgrafik.
Einen Blick wert sind auch WP_Statistics,
W3 Total
Cache,
Breadcrumb NavXT, Cookie
Law Info, JetPack
oder Yoast
SEO. Stöber auf https://de.wordpress.org/plugins
nach weiteren Lösungen.
Teste neue PlugIns aber nicht auf einem Produktiv-System, sondern probiere die erst mal an einem eigens dafür aufgesetztem Testsystem aus. Und danke daran, auf einem Produktiv-System nur wirklich benötigte PlugIns zu nutzen, um die Sicherheit und die Performance der Site nicht zu beeinträchtigen.
Eine englischspachige Anleitung: http://codex.wordpress.org/Hardening_WordPress
oder auf deutsch unter: http://codex.wordpress.org/de:Hardening_WordPress
Sicherheits-Tipps: https://www.kuketz-blog.de/basisschutz-wordpress-absichern-teil1.
Schalte xml-rpc
ab
Erstelle BackUps Deiner Datenbank.
Natürlich ist Wordpress nicht das einzige CMS. Es lohnt sich ggf.
auch ein Blick auf Joomla, TYPO3, Drupal und andere Lösungen zu
werfen. Weitere Informationen dazu siehe:
http://www.visual4.de/open-source-cms-system/cms-vergleich-joomla-wordpress-typo3-drupal-contao-plone.html
http://w3techs.com/technologies/history_overview/content_management/ms/y.
Wenn Du wissen willst, welche Contentmanagementsysteme zur Zeit
beliebt sind und für welche Systeme Mitarbeiter gesucht werden,
solltest Du entsprechende Stellenangebote
unter die Lupe nehmen.
Autor: Stephan Franke · sfranke@mediengestalter-mm-hamburg.de · Version vom: 12.03.2021
Dieses Dokument ist unter der Creative Commons Lizenz BY-SA veröffentlicht.