Gestalteter Titel-Schriftzug
Gestalteter Titel-Schriftzug

Von der Bearbeitung bis in die Galerie

Inhaltsverzeichnis

Einleitung

Nicht, dass mich mal irgendjemand danach gefragt hätte, aber bin ich dennoch der Meinung, nach allem, was ich beim Erstellen dieser Seite gelernt habe, dem Internet auch mal was Spezifisches dafür zurückgeben zu können.

In folgenden Zeilen werde ich also zum einen auf unseren Workflow eingehen, der die Galerie überhaupt erst funktionstüchtig macht. Und anschließend werde ich versuchen, ein paar PHP-Tricks zu beschreiben, um klar zu machen, wie unsere Webseite funktioniert und dem ein oder anderen Interessierten ein paar Snippets zu Verfügung zu stellen. Ein paar fundierte Grundkenntnisse in Sachen Webdesign und in den benötigten Sprachen – genannt seien hier HTML, PHP und logischerweise CSS – setze ich voraus, denn Grundkurse zu den entsprechenden Techniken gibt es online mehr als genug. Und aus eigener Erfahtrung kann ich sagen, dass da durchaus brauchbares Material dabei ist!

Wie man unserer Seite ansehen sollte, ist sie nicht unbedingt das, was man als konventionell bezeichnen würde. Das fängt bei Ihrem reinen Layout an und setzt sich wohl auch hinter den Kulissen so fort. Der Grund dafür ist nicht etwa der, dass wir uns gerne das Leben schwer machen. Vielmehr hatte man sich zunächst Verschiedenes in den Kopf gesetzt, was man mit unserem Webauftritt erreichen wollte, und keine verfügbare Technik hat es so umsetzen können. Die Seiten, die Lightroom selbst zu Verfügung stellt, zwingen uns das typische Adobe-Design auf. Und auch Dreamweaver und diverse CMS-Systeme können entweder nicht das, was wir wollen, oder die Seite entspricht mindestens optisch nicht unseren Anforderungen. Überdies wollte ich jeweils auch gerne sehen, was hinter der reinen Darstellung genau passiert, aber spätestens im Content-Management-Bereich hört da das Fachverständnis bei mir auf.

Die Folge ist nun, dass unser Quelltext – bis auf eine winzige Ausnahme im Javascript-Bereich – tatsächlich komplett selbst geschrieben ist. Ob sich sonst noch jemand diese Mühe machen möchte, darf gerne jeder für sich entscheiden. Aber selbst wenn nicht, lässt sich sicher der ein oder andere hier beschriebene Lösungsansatz auch in bestehende Systeme übertragen. Tipps, wie man diese in Wordpress, Joomla oder sonst einen Baukasten integriert, sind aber leider nicht zu erwarten, denn: ich weiß es schlicht und ergreifend nicht.

Gleich vorweg noch folgender Hinweis: ich bin weder IT-Spezialisist noch Programmierer, und ich gehe davon aus, dass bei so mancher Herangehensweise meinerseits genannte Personen mit den Augen rollen werden – und das bestimmt auch zu recht. Haben diese bessere Lösungen parat, mit denen wir uns das Leben erleichtern können, nehmen wir das gerne an. Auf Kommentare wie „das macht man so aber nicht“ verzichten wir hingegen liebend gerne. Die Seite läuft. Und sie läuft meines Erachtens gut und sicher – so viel Selbstvertrauen haben wir mittlerweile!

Aller Anfang mit Adobe Lightroom

Viel des im Folgenden beschriebenen lässt sich selbstverständlich auch auf andere Bildbearbeitungs- und Archivierungs-Software übertragen. Aber erstens arbeiten wir selbst damit und sind zweitens mit dieser Lösung wohl auch kaum alleine.

Die Bearbeitung der Bilder oder Bildrohdaten lass' ich hier mal außen vor, da hat jeder seine eigene Philosophie. In diesem Workshop geht es ohnehin darum, was genau nach der Bearbeitung passiert. Zum einen bekommen alle Bilder einen Titel und eine Beschreibung. Das ist schon mal das, was später unter den Bildern stehen wird. Des Weiteren kommen Stichworte und ein Kopienname dazu. Letzterer wird benötigt, damit später zwei Bilder, die am gleichen Tag entstanden sind, nicht die gleiche Dateibenamung bekommen und sich dann gegenseitig beim Export überschreiben; dazu aber unten mehr.

Vergabe der Stichworte

Wie Ihr hier sehen solltet, haben wir fünf „Überkategorien“, in welche sich die Galeriebilder einsortieren. Der erste Punkt „alle Bilder“ interessiert bei der Vergabe der Stichworte (fast) nicht, für alle anderen haben wir Nummern vergeben. Das wären dann beispielsweise für die zweite Überkategorie „Makros“ die Zahlen 101 bis 105. 101 für „Schmetterlinge“, 102 für „Bienen & Fliegen“ usw.. In der Landschaftskategorie geht es entsprechend mit 201 los und endet bei „Küste & Meer“ und damit bei der Kennziffer 207.

Mehrere dieser Zahlen als Stichworte für ein Bild zu vergeben ist durchaus möglich. Im Anschluss kann man nach Belieben weitere Stichworte in Textform eingeben. Einzig bildet hier noch das Wort „Highlight“ eine Ausnahme, da dieses später dafür verantwortlich ist, dass das entsprechende Bild in unsere Hall of Fame sortiert wird.

Der Kopienname

Oben schon einmal angesprochen, vergeben wir den Kopiennamen in Light­room, um Duplikate zu vermeiden. So ist dieser grundsätzlich erst mal „1“; und wenn wir mehrere Bilder von einem Tag einstellen, nummerieren wir diesen bis 9 durch. Der Dateiname der Bilder (ohne Dateiendung) befindet sich auf unserer Seite sowohl in der Thumbnail-Galerie wie auch in der Großansicht rechts unter dem Bild. Davon ausgehend, dass es niemand von uns schafft, mehr als neun brauchbare Bilder pro Tag zu schießen, ist die genannte Zahl immer einstellig, und die Skripte sind auch darauf ausgelegt.

Korrekte Exporteinstellungen

Tausende von Möglichkeiten ergeben sich, wie man die Bilder aus Lightroom exportieren kann. Ich denke kaum, dass jemand exakt unsere Einstellungen verwenden wird, aber ich reiße kurz mal an, was wir uns bei den einzenen Punkten gedacht haben; die Reihenfolge entspricht der, die Lightroom zumindest beim Schreiben dieses Textes vorgab.

  • Der Speicherort für Export ist der Ordner, den wir später per FTP-Programm mit unserem Webspace synchronisieren. Mit einem bisschen Ahnung von Windows sollte es ebenfalls möglich sein, die Daten direkt auf den entfernten Ordner zu stellen. Bestehende Dateien werden OHNE WARNMELDUNG überschrieben.
  • Die Dateibenamung sieht bei meinen Dateien in Lightroom so aus: {Datum (JJMMTT)»}-R{Name der Kopie»}. Dazu muss das „Umbenennen in:“ aktiviert sein, und über den daneben stehenden Balken gelangt man in die benötigten Einstellungen. Letzten Endes steht aber dann nur noch da, dass diese „Benutzerdefiniert“ sind.
  • Video interessiert uns nicht.
  • Bei den Dateieinstellungen wählen wir JPEG im Farbraum sRGB. Klar können die anderen Profile einen größeren und professionelleren Farbraum darstellen. Es sollte uns aber bewusst sein, dass später viele Nutzer mit Endgeräten unsere Seite ansehen, die beispielsweise AdobeRGB überhaupt nicht umsetzen können. Die Folge ist, dass die Bilder irgendwie interpretiert werden, aber in aller Regel nicht mehr so aussehen wie sie sollen. Qualitativ reichen uns 80% bei Weitem, die Dateigröße beschränken wir nicht.
  • Statt dessen passen wir die Bildgröße in den Monitor ein. Wählen wir „Breite & Höhe“, können wir mit 900 × 660 Pixeln normale hoch- und querformatige Bilder abdecken. Für Panoramen und quadratische Bilder unterscheiden sich diese Werte. Und ob einem dieses Maß reicht, hängt stets vom Layout der eigenen Seite und den persönlichen Ansprüchen ab. Die „Auflösung“ interessiert eigentlich nicht, da wir ja ein Pixelmaß eingegeben haben. Der Ordnung halber vergebe ich aber stets 72dpi, wenn ich Bilder für die digitale Wiedergabe optimiere.
  • Bei der Ausgabeschärfe schärfen wir mit „Standard“-Stärke für „Bildschirm“.
  • Wir schließen alle Metadaten ein, entfernen dann aber Personen- und Positionsinformationen. Der letzten Punkt ist deaktiviert; keine Ahnung, was eine Lightroom-Hirachie macht.
  • Wir brauchen kein Wasserzeichen
  • und verzichten auch auf eine weitere Nachbearbeitung.

Ich füge hier mal an, dass trotz größter Mühe, die man sich selbst beim Exportieren und beim vorangegangenen Pflegen der Bildinformationen gibt, nicht immer alles funktionieren muss. Der Grund dafür ist Adobe selbst. Wenige Wochen vor dem Schreiben dieses Textes konnte ich meine Bilder nicht mehr exportieren, da in den JPGs die Metadaten verschoben waren. Ein Anruf beim Adobe-Support kann man sich da sparen. Den moderat kompetenten Mitarbeitern geht es dann nur darum, was man selbst falsch macht; sofern man überhaupt eine brauchbare Info erhält. Leider scheint es wohl auch hier so zu sein, wie bei vielen anderen Sachen heutzutage auch: die Programme werden zwar immer leistungsstärker, aber gleichzeitig immer fehlerhafter. Ich arbeite schon seit vielen Jahren mit Adobe-Software, und es ist leider wirklich so, dass von der Zuverlässigkeit her die Programme noch nie so unausgereift wie heute auf den Markt kamen... Also wenn was nicht funktioniert: einfach das nächste Update abwarten und bis dahin improvisieren.

Erzeugen von Thumbnails (=Miniaturen)

Passend zu vorangegangenem Absatz merkt man auch bei diesem Punkt, dass ein Lightroom kein Photoshop ersetzen kann. Das Erzeugen von Miniaturbildern kann auf viele Weisen geschehen. Man kann sie mit PHP erstellen, kann sie direkt aus den großen JPGs ziehen, oder man erzeugt sie manuell, wofür wir uns entschieden hatten. Arbeitet man hier mit Lightroom, und arbeitet parallel zu oben genanntem Export, werden die Dateien aber unverhältnismäßig groß: bis zu zehn mal größer, als wenn ich direkt in Photoshop einen Web-Export mache. So haben unsere aktuellen Thumbnails durchschnittlich eine Größe von 4kB; mit Lightroom wäre es über 30. Gut, Speicher kostet nichts, kann man einerseits sagen. Wir haben allerdings auf unserer Galerie-Startseite bislang knapp 450 Bilder stehen. Und wenn ich für diese Darstellung knapp 14MB statt 2 herunterladen muss, merke ich als Betrachter der Webseite diesen Unterschied auch mit einer Glasfaser-Verbindung.

Entsprechend haben wir in Photoshop Aktionen angelegt, die die Bilder – wir nehmen dazu die zuvor mit Lightroom generierten Galeriebilder – verkleinern und einen Web-Export bei gleichem Namen in einen anderen Ordner machen. Danach noch schließen und fertig. Folglich werden einfach nur neu erstellte Bilder in einer Stapelverarbeitung durch Photoshop gejagt, und nach ein paar Sekunden sind alle Miniaturen erstellt.

Und ab geht's Richtung Internet

Wie schon erwähnt gibt es lokal wie auch auf dem Webserver für die Galerie zwei Ordner: den mit den eigentlichen Galeriebildern und den mit den Miniaturen. Via FTP-Programm gleichen wir diese untereinander ab. Wir machen das mit Dreamweaver direkt, alternativ ist es natürlich auch mit Filezilla oder gar dem WindowsExplorer kein Problem.

Interessant wird es jetzt, da nach dem Synchronisieren beider Ordner mit den Online-Pendants die Aktualisierung unserer Seite bereits abgeschlossen ist. Klar bedurfte dieser Workflow einer sehr umfangreichen Vorbereitung. Doch jetzt, wo alles läuft, haben wir innerhalb von Sekunden unsere Seite auf den aktuellen Stand gebracht, und neue Bilder sind für jedermann zugänglich.

Nachdem wir nun auf die lokale Bearbeitung der einzelnen Bilder eingegangen sind, werden wir uns ein bisschen in die Tiefen unserer Webtechnik verstricken. Da hat es dann nichts mehr mit dem korrekten Bedienen von Programmen zu tun, sondern es geht darum, brauchbaren Quelltext zu produzieren. Das sollte einem liegen, ansonsten lege ich nahe, die Lektüre an dieser Stelle besser beenden...

PHP-Umsetzung

Die JPGs beinhalten – hat man alle vorangegangenen Anweisungen befolgt – eine ganze Reihe an weiteren Informationen, die wir nun auslesen müssen. Beim Sammeln von Informationen halten wir uns immer an die Galeriebilder. Die Thumbnails haben diese dank Photoshop und zu Gunsten der Dateigröße nicht mehr!

Um die Sache noch etwas zu verkomplizieren, sind die Informationen der Aufnahmen nicht in einem, sonder in zwei Arrays – also Sammlungen von Variablen – gespeichert. Ich werde sie zur Unterscheidung als Exif- und Metadaten bezeichnen, auch wenn zumindest letztgenannter Ausdruck nicht dem korrekten Terminus entspricht.

Bildinformationen sammeln

Machen wir uns der Übersichtlichkeit halber erst mal daran festzustellen, was das Bild denn überhaupt an Exif- und Metadaten enthält. Dazu im folgenden ein kurzes Skript, dass beide ausliest und dazwischen auch noch das eingebettete Thumbnail anzeigt. „bilderordner“ und „bild“ sollten logischerweise durch die eigenen Daten ersetzt werden.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<?php
$exif = exif_read_data ( "bilderordner/bild.jpg" , ANY_TAG , true );
foreach ( $exif as $schluessel => $abschnitt ) {
  foreach ( $abschnitt as $name => $wert ) {
    echo $schluessel . '.' . $name . ': ' . $wert . '<br/>';
  }
}

$image = exif_thumbnail ( "bilderordner/bild.jpg" , $width , $height , $type );
echo '<img width="' . $width . '" height="' . $height . '" src="data:image/gif;base64,' . base64_encode ( $image ) . '">';

$size = getimagesize ( "bilderordner/bild.jpg" , $info );
$titel = iptcparse ( $info["APP13"] );
foreach ( $titel as $schluessel2 => $abschnitt2 ) {
  foreach ( $abschnitt2 as $name2 => $wert2) {
    echo $schluessel2 . '.' . $name2 . ': ' . $wert2 . '<br/>';
  }
}
?>

So, wenn das jetzt noch akzeptabel war, kann man getrost weiterlesen, denn viel schlimmer wird's nicht mehr.

Wir benutzen für die Anzeige von Bildtitel und Beschreibung sowie für Stichworte und zum Herausfinden, um was für eine Bildorientierung es sich handelt, die Funktion getimagesize, für alle anderen Werte die Funktion exif_read_data. exif_thumbnail kommt bei uns, wie im Skript beschrieben, überhaupt nicht zum Tragen, aber der Vollständigkeit halber habe ich es mal mit aufgeführt.

Schaut man sich die Ausgabe des Skriptes einmal genauer an, fällt auf, dass die Bildbeschreibung mit beiden Funktionen erreichbar ist; also mit exif_read_data unter dem Array-Key IFD0.ImageDescription und mit getimagesize unter dem Array-Key 2#120. Was man jetzt davon benutzt, bleibt jedem selbst überlassen. Fangen wir aber mal an, das Ganze auch brauchbar zu verwerten.

Galerien nach Stichwort sortieren

Wir lassen also die Kategorie „alle Bilder“ mal außen vor und kümmern uns um den Rest. Entspricht die Vorarbeit unserer Anweisung, sollte nun in jedem Foto in den Stichwörtern mindestens eine dreistellige Zahl enthalten sein, die als Kennziffer für die Sortierung dient.

In der Adressleiste des Browsers erwartet unsere Seite die Variable $theme, die vorgibt, wie gefiltert werden soll. Wollen wir uns Portraits anschauen, sendet $theme basierend auf unserer Logik die 403. Das könnte natürlich auch sonst alles Mögliche sein, aber die Zahlen haben ein paar Vorteile, auf die ich nachher noch zu sprechen komme.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
$ordner = "bilderordner";
if ( $handle = opendir ( $ordner ) ) {
  while ( ( $file = readdir ( $handle ) ) !== false ) {
    if ( substr ( $file , -4 ) == ".jpg" ) {
      $size = getimagesize ( $ordner . "/" . $file , $info );
      if ( isset ( $info["APP13"] ) ) $iptc = iptcparse ( $info["APP13"] );
      if ( in_array ( $theme , $iptc["2#025"] ) ) $bilderdateinamen[] = $file;
    }
  }
  closedir ( $handle );
}
if ( !empty ( $bilderdateinamen ) ) rsort ( $bilderdateinamen );
?>

Will also en Detail heißen: wir öffnen das Verzeichnis „bilderordner“ (sollte natürlich durch Euer eigenes ersetzt werden), wählen jede Datei aus, die auf „.jpg“ endet und schauen mit der Funktion getimagesize in die Metadaten. Ist nun im Array 2#025 der Metadaten das Stichwort vorhanden, das mit $theme übergeben wurde, kommt der Bilddateiname in unser Sammelarray $bilderdateinamen. Sobald alle Bilder so filetiert wurden, wird das Verzeichnis wieder geschlossen. Im Anschluss wird der Inhalt von $bilderdateinamen noch rückwärts sortiert, sofern dieses Array einen Inhalt hat.

Einzig die Highlight-Galerie im ersten Kategorie-Block funktioniert genauso. Hier muss nur das $theme durch den String „Highlight“ ersetzt werden.

Die Über-Galerien „Makros“, „Landschaften“, „Urbanes“ und „Sonstiges“ beinhalten je eine Startseite, die jeweils mit den vollen Hundert angesprochen werden und in die man direkt aus der Navigation gelangt. Unser Skript sorgt hier dafür, dass alle Inhalte der entsprechenden Reihe dort Einzug finden. Gelöst wird das Ganze über einen ganz furchtbaren Kauderwelsch, den wir anstatt der achten Zeile platzieren:

08 if ( in_array ( ( $theme + 1 ) , $iptc["2#025"] ) or in_array ( ( $theme + 2 ) , $iptc["2#025"] ) or in_array ( ( $theme + 3 ) , $iptc["2#025"] ) or in_array ( ( $theme + 4 ) , $iptc["2#025"] ) or in_array ( ( $theme + 5 ) , $iptc["2#025"] ) or in_array ( ( $theme + 6 ) , $iptc["2#025"] ) or in_array ( ( $theme + 7 ) , $iptc["2#025"] ) or in_array ( ( $theme + 8 ) , $iptc["2#025"] ) ) $bilderdateinamen[] = $file;

Dass das jetzt nicht unbedingt Feinmechanik ist, weiß ich selbst. Leider ist mir bis dato nichts Besseres eingefallen, bin aber für Vorschläge offen!

Galerien nach Aufnahmezeitpunkt sortieren

Was diesen Punkt angeht, spielen uns unsere Dateinamen in die Hände, da sie ja hauptsächlich aus dieser Information bestehen. Machen wir's also kurz und tauschen mal wieder die achte Zeile (siehe letzter Abschnitt) mit folgendem aus:

08 if ( substr ( $file , 0 , 2 ) == 15 ) $bilderdateinamen[] = $file;

...sortiert mir jetzt alle Bilder, die 2015 entstanden sind. Klar könnte man sich das getimagesize-Geraffel nun auch sparen. Allerdings geht bei uns jedes Einzelstück der Galerie von einer einzigen Seite aus, so dass ich diese Funktion durchaus für andere Bedingungen brauche.

Entspricht jetzt Euer Dateiname nicht unserem Terminus, könnt Ihr Euch den Aufnahmezeitpunkt auch mit getimagesize aus den Metadaten ziehen (Array-Key 2#055) oder mit exif_read_data aus den Exifs (Array-Key EXIF => DateTimeOriginal). Hier ist nur zu beachten, dass man statt den ersten beiden nun die ersten vier Stellen zum Abgleich benötigt, da die Jahreszahl jeweils ausgeschrieben wird.

Einen lustigen Abschnitt bildet die Galerie „neueste Bilder“, in die wir alle Aufnahmen sortieren, die jünger als 60 Tage sind. Ich vermute mal, das geht auch auf eleganterem Wege, aber an Kreativität ist der unsrige wohl kaum zu übertreffen...:

08
09
10
$heute = ( date ( y ) * 365 + ( date ( m ) - 1 ) * 31 + date ( d ) );
$aufnzeit = ( substr ( $file , 0 , 2 ) * 365 + ( substr ( $file , 2 , 2 ) - 1 ) * 31 + substr ( $file , 4 , 2 ) );
if ( ( $heute - 60 ) < $aufnzeit ) $bilderdateinamen[] = $file;

Kapiert? Wenn nicht, lest es Euch nochmal durch; das wird schon!

Die Aufnahmedaten in Form bringen

Liest man sich das Ergebnis unseres ersten Skripts einmal durch, merkt man schnell, dass man nicht alle Ergebnisse ungefiltert verwenden kann. Kameramodell und ISO sind nicht wirklich ein Problem, der Titel und die Bildbeschreibung in den Metadaten auch nicht. Bei der Belichtungszeit, der Blende und noch ein paar Werten mehr hört die Verständlichkeit allerdings auf, und die Werte müssten umformatiert werden. Im Folgenden kommen ein paar Zeilen, wie wir das Ganze mit den für uns wichtigen Daten umgesetzt haben.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$bildpfad = "bilderordner/bild.jpg";
$exif = exif_read_data ( $bildpfad , ANY_TAG , true , false );
 
echo 'Kameramodell: ' . $exif["IFD0"]["Model"] . '<br/>';
 
list ( $num , $den ) = explode ("/" , $exif["EXIF"]["FocalLength"] );
echo 'Brennweite: ' . ( $num / $den ) . 'mm<br/>';
 
list ( $num , $den ) = explode ("/" , $exif["EXIF"]["FNumber"] );
echo 'Blendenwert: F/' . ( $num / $den ) . '<br/>';
 
list ( $num , $den ) = explode ("/" , $exif["EXIF"]["ExposureTime"] );
echo 'Belichtungszeit: ';
if ( $num > $den ) {
  echo $num . 's';
} else {
  $den = round ( $den / $num );
  echo '1/' . $den . 's';
}
echo '<br/>';
 
echo 'ISO-Geschwindigkeit: ' . $exif["EXIF"]["ISOSpeedRatings"];
?>

Im Vergleich zu manch Vorangegangenem ist dieser Code meiner Meinung nach noch relativ verständlich. Sollten entgegen dem Fragen dazu sein, bin ich nach wie vor nicht kontaktscheu. Einfach anschreiben, und ich versuche mich klarer auszudrücken – und werde es gegebenenfalls auch hier ändern.

Die verbliebenen Stichworte

Die weiter oben behandelte Sortierung der Bilder in das Array $bilderdateinamen steht in unserem Quelltext noch vor dem <head>-Bereich des HTML. Entsprechend sind die Bilddateien auch schon geknackt, wenn es zu den meta-Tags der Seite geht. Dort werden nun die Stichworte nach numerischen und nichtnumerischen sortiert. Letztgenannte wandern dann in den <head> der Seite, wie die Bildbeschreibung übrigens auch. So haben wir also bereits in Lightroom die Möglichkeit, die Seite optimal auszuzeichnen.

Der Vollständigkeit halber hier das kurze Skript, das das Stichwort-Array des Fotos öffnet, filtert und die für die HTML-Keywords benötigten Variablen in ein neues Array schreibt:

01
02
03
foreach ( $iptc["2#025"] as $keyword ) {
  if ( !is_numeric ( $keyword ) and $keyword != "Highlight" ) $metakeyword[] = $keyword;
}

Epilog

Als Chlÿxgephÿl 2012 aus der Taufe gehoben wurde, war das auch mein Start mit der ernst gemeinten Programmiererei – damals allerdings noch auf Basis von Flashs ActionScript. Spätestens als dann aber auch ich anfing, mir Webseiten auf dem Smartphone anzusehen, war klar, dass das keine Zukunft hatte, und ich musste wieder zurück auf HTML. PHP habe ich bis dato immer gemieden, weil ich den Sinn der Sprache einfach nicht verstanden habe. Trotz allem blieb mir kaum eine Alternative übrig, denn ohne Dynamik eine Seite dieses Ausmaßes zu erstellen, hielt ich schon damals für unmöglich.

Letzten Endes brachte mir die Online-Recherche die Erkenntnis, was PHP genau macht. Und so fiel mir das Lernen auch nicht mehr wirklich schwer, denn HTML umzusetzen wusste ich durchaus.

Jetzt war ich, wie schon anfangs angesprochen, der Meinung, die Seite und die Sprache so gut zu beherrschen, dass sich ein Text wie derer rechtfertigt. Dass ich als Quasi-Autodidakt mir wohl teilweise eine eigene Logik zurechtgelegt habe, lässt sich so natürlich nicht vermeiden. Wenn also etwas nicht verständlich ist, an dieser Stelle zu wiederholten Male der Hinweis zur Kontaktaufnahme. Gedacht war die Lektüre dafür, Leuten mit ähnlichem Antrieb ein paar Tricks gesammelt zu Verfügung zu stellen, damit auch ihre Ideen umgesetzt werden können.

Sollte sich also tatsächlich mal jemand auf genau diese Seite verirrt haben und jetzt immer noch am Lesen sein, gilt diesem unser allerherzlichster Glückwunsch, und viel Erfolg bei seinem Projekt!