Ich betreibe selbst Shops auf JTL. Das ist der Grund, warum ich bei Shop-Themen selten zuerst über Optik rede — die Probleme, die Händler wirklich Geld kosten, sitzen fast immer woanders.
Die Fehler, die ich am häufigsten finde
Direkt im Original-Template gearbeitet. Sieht kurzfristig aus wie eine Abkürzung und führt dazu, dass Updates entweder die Änderungen fressen oder gar nicht mehr eingespielt werden. Beides endet an derselben Stelle: ein Shop, der zwei Jahre hinter dem aktuellen Stand läuft, inklusive der Sicherheitslücken dieser zwei Jahre.
Cache, der nie aufgeräumt wird. Ein JTL-Shop legt sehr viele kleine Dateien an. Ich hatte einen Fall mit 3,2 Millionen Dateien im Cache-Verzeichnis — das Webhosting war nicht am Speicherplatz am Ende, sondern an der Anzahl der Dateien, die der Tarif erlaubt. Der Shop war nicht langsam, er war irgendwann einfach kaputt.
Bots in der Filternavigation. Jede Kombination aus Farbe, Größe und Hersteller ist eine eigene URL. Ein Crawler, der sich systematisch durchklickt, erzeugt in wenigen Stunden mehr Datenbanklast als der gesamte echte Traffic des Monats. Rate-Limits helfen dagegen kaum, weil die Anfragen von vielen verschiedenen Adressen kommen. Es gibt aber ein Merkmal, das echte Besucher nicht erzeugen — darüber lässt es sich sauber trennen.
Sicherheit ist kein Zustand, sondern eine Gewohnheit
Als 2026 eine gravierende Lücke in JTL-Shop 5.7.0 bekannt wurde, habe ich einen Shop untersucht, der bereits gepatcht war. Die Hintertür war entfernt, das Update eingespielt, alles schien erledigt.
Drei Wochen später lagen die Datenbank-Zugangsdaten immer noch im Klartext öffentlich abrufbar im Webroot — in einer Backup-Datei ohne PHP-Endung, die der Server brav als Text ausgeliefert hat. Der Patch war korrekt. Das Aufräumen danach war es nicht.
Genau das ist der Teil, der in den meisten Anleitungen fehlt und den ich deshalb ausführlich beschrieben habe.
Wie ich Optik angehe
Design mache ich, aber nicht als Selbstzweck. Was mich an vielen Shops stört, ist nicht, dass sie hässlich wären, sondern dass man ihnen ansieht, aus welchem Baukasten sie kommen. Ein eigenes Child-Template mit ein paar bewussten Entscheidungen zu Typografie, Abständen und Farbe macht dabei mehr Unterschied als ein gekauftes Premium-Theme — und bleibt update-fähig.