Idee und technischer Aufbau der Webseite oympischer-stammbaum.de

In diesem Blog-Artikel stelle ich die inhaltliche Idee der von mir erstellten Webseite olympischer-stammbaum.de, sowie deren technischen Umsetzung in einem modularem Python-Projekt vor.

 

Idee der Webseite olympischer-stammbaum.de

Ich habe mich seit meiner Jugend für die griechische Mythologie interessiert, welche reich an faszinierenden Geschichten und Legenden ist und auch in der heutigen Welt noch eine gewisse Relevanz hat. Ein Beispiel hierfür sind zahlreiche Begriffe und Redewendungen, die ihren Ursprung in der griechischen Mythologie haben. Vier bekannte Begriffe sind Herkulesaufgaben, die Achillesferse, Chaos oder Sisyphusarbeit.

Die griechische Mythologie besteht aus vielen Legenden, welche wiederum eine Vielzahl an Figuren beinhaltet. Diese Figuren werden auf meiner Webseite olympischer-stammbaum.de vorgestellt. Das Ziel dieser Webseite ist nicht nur diese Figuren zu nennen, sondern auch Details und die familiäre Struktur dieser nachvollziehbar bereitzustellen.

 

Welche Informationen werden auf olympischer-stammbaum.de bereitgestellt?

Auf oympischer-stammbaum.de werden Figuren der griechische Mythologie vorgestellt. Jede Figur ist in einer der folgenden vier Gruppen eingeteilt: Götter, Kreaturen, Helden und Menschen. Diese Gruppen können nochmal in einzelne Untergruppen aufgeteilt werden (Urgötter, Olympische Götter oder Titanen). Eine Liste aller Figuren wird für jede der vier Gruppen auf der Webseite bereitgestellt. Zum Veröffentlichungszeitpunkt dieses Blog-Artikels existierten zu 70 Figuren eigene Unterseiten – die Webseite wird aber kontinuierlich um neue Figuren und weiteren Informationen zu bestehenden Figuren erweitert.

Für jede Figur existiert eine eigene Unterseite, auf denen einzelne Informationen zu eben dieser bereitgestellt. werden. Exemplarisch ist in der Abbildung rechts ein Ausschnitt der Unterseite der Göttin Athene eingeblendet.

Bereitgestellt wird immer ein Haupttext, der die Figur grob beschreibt. Je nach Figur kann dieser kürzer oder länger sein – abhängig davon, wie viele Informationen zu dieser Figur existieren. Spielt eine Figur in vielen Geschichten und Legenden eine entscheidende Rolle, so kann es für diese einen einzelnen Abschnitt geben – in der Abbildung rechts gibt es zum Beispiel einen Abschnitt für Pallas und Athene, sowie für den Wettstreit mit Arachne.

Neben den im vorherigem Abschnitt erklärten textuellen Informationen werden wichtige Attribute in einer eigenen Infobox aufgezählt. Solche Informationen sind der Name (in deutscher, griechischer und lateinischer Form), die Gattung, das Geschlecht, Symbole sowie familiäre Informationen, zu denen die Eltern und Großeltern, der Gatte, die Geschwister und Halbgeschwister und die Kinder zählen. Falls zu diesen Figuren eigene Artikel bestehen sind diese verlinkt.

Unter den textuellen Informationen und der Infobox mit den Attributen wird für die ausgewählte Figur der direkte Stammbaum mit einer Aufzählung der Geschwister und der Kinder, sowie mit den Eltern und Großeltern angezeigt – in der Abbildung unten exemplarisch für den Gott Apollon.

 

Neben den Informationen zu den einzelnen Figuren wird eine Übersicht der familiären Struktur aller Figuren, die auf der Webseite eigene Seiten haben in einem großen Stammbaum bereitgestellt. Jede Figur wird dabei als Punkt dargestellt, wobei deren Farbe die Gruppe dieser, und der Radius des Punktes die Bedeutung in der Struktur wiedergibt.

Die Punkte sind mit Linien mit Pfeilen verbunden, wobei der Pfeil immer auf das Kind der ausgehenden Figur zeigt. Da Zeus beispielsweise ein Kind des Kronos und der Rhea ist, geht von diesen beiden Figuren je ein Pfeil auf Zeus aus.

Klickt der Anwender auf einen der Punkte, so öffnet sich die eben beschriebene Seite der Figur mit weiteren Informationen. Im Stammbaum kann mit eigenen Hilfebuttons in den Graph herein- und herausgezoomt werden, damit die Struktur entweder detaillierter oder allgemeiner dargestellt werden kann. Es besteht auch die Möglichkeit in der Menge der Punkte nach konkreten Einträgen zu suchen.

Die direkten "Nachbarpunkte" einer Figur, also die Eltern und Kinder einer solchen, werden hervorgehoben, wenn die Maus über den Punkt einer Figur gehalten wird. Dies ist im folgenden Bild exemplarisch für Zeus abgebildet.

 

Technischer Aufbau von olympischer-stammbaum.de

Häufig wird für Webseiten ein Content Management System (kurz: CMS) wie Joomla oder WordPress verwendet, mit denen sich Inhalte online verwalten lassen, sodass der Inhalt bei jeder Webanfrage dynamisch erzeugt wird. Ein CMS ist für diese Webseite jedoch nicht sinnvoll, da das Verwalten der Inhalte sehr aufwendig wäre. Deutlich wird dies, wenn ein Eintrag zu einer neuen Figur erzeugt wird. Neben dem konkreten Eintrag müsste auf den Seiten der Eltern und Kinder, sowie in der Liste der vier Gruppen und der Liste aller Figuren der bestehende Inhalt angepasst werden. Dieses Vorgehen ist aufwendig und fehleranfällig.

Alternativ könnten die Informationen der Figuren in einer Datenbank o.ä. hinterlegt sein, sodass der konkrete Seiteninhalt pro Webanfrage generiert werden kann. Aber auch dieses Vorgehen hat Nachteile, weshalb ich mich nicht für eine solche Umsetzung entschieden habe. Zum einen müsste pro Anfrage die familiäre Struktur berechnet werden (was zeit- und ressourcenaufwendig ist), zum anderen könnte dies auf dem Server, auf dem meine Webseite gehostet wird, nur mit der Skriptsprache PHP umgesetzt werden, welche ich unter anderem wegen dem inkonsistentem und unnötig kompliziertem Syntax sowie wegen der eingeschränkte Funktionalität (umgangssprachlich formuliert) blöd finde :)

Stattdessen habe ich ein modulares Python-Projekt aufgesetzt, in dem die Informationen der Figuren in einzelnen Klassen zusammengefasst sind, aus denen dann einmal eine statische Webseite erzeugt wird, sodass ich fertige HTML-Dateien auf den Server laden kann. Dies hat die Vorteile, dass ich eine schöne Sprache (Python) und nicht PHP verwenden konnte, und dass der Inhalt für jede Webanfrage sehr schnell bereitgestellt werden kann. Informationen, was ich unter einem modularem Python-Projekt verstehe, habe ich in dem Blog-Artikel Modularisierung in der Programmierung beschrieben.

In einem eigenen Modul werden die einzelnen Figuren beschrieben. Erfasst wurden die textuellen Inhalte sowie die Attribute. Familiär werden nur die Eltern und der Gatte erfasst – aus diesen Informationen werden dann automatisch die Großeltern, die Geschwister und die Kinder ermittelt.

Ein eigenes Modul erstellt die Informationen für den großen Stammbaum. Hierfür wird ein Graph (Artikel hierzu auf Wikipedia) erzeugt, welcher die Nodes und Edges definiert. Ein Algorithmus der Force-directed graph drawing-Gruppe erzeugt dann die Anordnung der einzelnen Nodes, sodass der Graph strukturiert als Stammbaum dargestellt werden kann.

Ein weiteres Modul erzeugt aus den Informationen der Figuren und der Graph-Daten nun die HTML-, CSS-, und JavaScript-Dateien, die nach dem Erzeugen auf den Webserver geladen werden können. Es existieren hierfür separate Module, die zum Beispiel Funktionen zum Ergänzen von Links in Texten ermöglichen. Diese Funktion analysiert Texte (wie die Infotexte auf den Seiten der Figuren), findet Namen von Figuren, für die es eigene Seiten gibt, und vernetzt diese dann durch das Einfügen von Links.

Vorgestellt wurden hier nur einige Module, die ich in meinem Python-Projekt umgesetzt habe. Allgemein wurde das Konzept eingehalten, welches ich im oben verlinkten Blog-Artikel beschrieben habe – die Module wurden so zum Beispiel in verschiedenen Ebenen abgebildet, die nur Fremdmodule auf tieferen oder der gleichen Ebene nutzen.

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.