Dies ist ein offener Beitrag, in dem ich nach und nach meine Erfahrungen mit den genannten Flatfile-Content-Management-Systemen festhalten will.
Worum geht's und was will ich überhaupt?
Wie im ersten Wochenrückblick 2023 beschrieben, hab ich mit dem Gedanken gespielt wieder mit dem Bloggen anzufangen. Dummerweise hab ich 2018/2019 bei einem Serverumzug das alte Wordpress-Blog gar nicht mehr reaktiviert. Jetzt stellte sich also die Frage, wie und wo neustarten?!
Gedanken sortieren:
- Ich will was Leichtes, Performantes
- mit schöner Optik
- selbst-gehostet
- kein Tracking, keine Cookies, keine Analyse. Nichts, was irgendwie Datenschutzzweifel mit sich bringt. Geht mir diese DSGVO-Scheiße auf den Sender...
- Wochenrückblick wäre ne Idee, damit hat man idR. immer Themen, mal mehr, mal weniger. Und es ist persönlich.
- Die Website direkt mit neubauen, nach und nach ggf. anreichern.
Warum kein Wordpress?!
Wie gesagt, ich wollte was ohne den ganzen Ballast, den Wordpress mitbringt. Es bietet viel, kann viel, lässt sich gut erweitern. Um es abzusischern und vor allem DSGVO-konform zu machen, muss man aber verhältnismäßig viel Aufwand betreiben und das quasi fortlaufend, nicht nur bei der Installation.
Kurze Suche brachte mich zu dieser Übersicht an Flat-File-CMS. Drei davon hab ich unter die Lupe genommen.
Bludit
Installation war easy, mir hat das Admin-Interface und das Frontend allerdings nicht zugesagt, deshalb hab ich mich nicht weiter damit beschäftigt. Das mag eine sehr unfaire Beurteilung sein. Ich kann mir auch vorstellen, dass Bludit durchaus für den Ein oder Anderen Sinn macht. Hinweis kam von Björn, der damit glaube ich zufrieden ist.
Automad
Automad hab ich direkt parallel installiert und das hat mir optisch sehr gut gefallen, sowohl im Frontend als auch im Adminbereich. Ich hatte auch die Website erstmal komplett damit aufgebaut. Allerdings haben mich einige Bugs genervt. Der Entwickler bastelt wohl an einem Update, es ist aber ungewiss, wann das kommt.
- Es wird definitiv immer ein existentielles Cookie für den Adminbereich gespeichert, auch für normale Besucher. Unkritisch, weil es keine personenbezogenen Daten enthält, aber erstmal ist da ein Cookie,... Siehe auch Diskussion hier und hier.
- Das Baker-Theme hat bei mir einige Fehler verursacht. Less2CSS warf superviele Fehler, die ich korrigieren konnte, aber es hat Stunden gekostet
- Je nach Theme werden Google Fonts geladen, hab ich erst später gemerkt
- RSS-Feed beinhaltet auch simple Seiten, nicht nur Blogartikel.
- Laut Thunderbird ist der Feed ungültig (damit hatte ich es zuerst geprüft)
- Admin-Interface ist schön, aber nicht ganz so intuitiv
- Viele Texte sind hart auf englisch in den Templates, die muss man erstmal finden um sie zu ersetzen
Grav
Mei erster Versuch mit Grav schlug fehl. Ich hab es dann nochmal auf einer frischen Subdomain und direkt mit dem Admin-Bundle versucht und damit ging es. Sehr intuitives Admin-Interface. Das Schöne ist, da ich bei Automad schon die Seiten mit Markdown aufgebaut hatte, konnte ich hier einfach rüberkopieren.
- Beim Upload per FTP dran denken, auch die versteckten Dateiein mit hochzuladen (nobrainer 🙄)
- BaseURL in der .htaccess ggf. anpassen
- es gibt viele Themes, leider nichts modernes, was mir zusagt. Werde mein eigenes auf Basis von Quark nach und nach umsetzen.
- Wenn man in den Einstellungen die Sessions deaktiviert, werden keine Cookies verwendet (außer im Admin)
- Es gibt ein Plugin, falls man doch einen Cookie-Consent-Banner einbauen will. Siehe auch Diskussion hier zum Thema DSGVO.
- Als CSS-Framework wird Spectre genutzt. Wenn man Bootstrap gewohnt ist, braucht es etwas Umdenken.
- RSS-Feed muss/kann über Plugin aktiviert werden
- Favicon hab ich manuell in
user/themes/../templates/partials/base.html.twig
im head eingebunden - Import von WP wohl möglich (ungetestet)
- Automatisierte, geplante Cache-Bereinigung und Backup möglich
Probleme
- [ ] Technik: Automatisches Freischalten klappt nicht, liegt evtl. an fehlenden Berechtigungen bei meinem Hosting-Paket? Aber auch wenn Beitrag ein Veröffentlichungsdatum in der Zukunft hat, ist dieser direkt live, sobald
published: true
. Was mache ich hier falsch? - [ ] Content: Finteuning RSS-Feed. Hab im Template hart das Hero-Image rausgeworfen, weil sonst doppelt, das "===" für die Summary-Begrenzung wird nicht beherzigt. Es erscheint fast der ganze Content, aber eben nur fast. Hab überlegt ob es sich lohnt eine Testumgebung zu installieren um in Ruhe dem RSS-Problem auf den Grund zu gehen.
- [ ] Cache-Thema, trotz ausgeschaltetem Cache werden Seiten nicht neu geladen. Blogindex z.B. aktualisiert sich nicht, wenn neue Artikel erscheinen.
- [ ] Technik: Warum klappen MD-Checklisten hier nicht, verdammt. Nichtmal mit Plugin
- [ ] Technik: Childtheme (siehe)
- [ ] Technik: Preview ist mit Plugin möglich, aber nur wenn man Sessions anstellt. Das finde ich sehr unschön, weil einen Blogartikel vor Veröffentlichung anzusehen, geht nur, wenn man den Content in eine versteckte/passwortgeschützte Seite kopiert. Oder eben doch ein Testsystem aufsetzen? Finde ich völlig drüber für diese Belange.
- [ ] neu Technik: Das Admin-Plugin setzt die Uhrzeit eines Beitrages immer zurück auf 00:00 Uhr bevor veröffentlicht wurde
- [ ] neu Technik: Beim Einfügen von Bildern wird die relative Adresse verwendet, was dann im RSS-Feed nicht klappt.
Todos
- [ ] Content: CV updaten, public machen (in Arbeit)
done
- ✅ E-Mail Spamschutz > per Twig
<a href="mailto:{{'me@myself.com'|safe_email}}" class="btn btn-sm">E-Mail</a>
- ✅ Post-Template verbessern (Anzeige Tags, Datum an gewünschter Stelle)
- ✅ richtiges Datumsformat bei den Teasern auf /blog/ (->
{{ page.date|date('d.m.Y') }}
in date.html.twig) - ✅ zu lange Links werden nicht umbrochen/abgeschnitten und sprengen das Design (-> CSS)
- ✅ Technik: Passwort-Schutz für bestimmte Seiten. Per Plugin?
- ✅ Technik: latest Mastodon-Post auf Startseite anzeigen? Mit Twig-Feeds-Plugin.
- ✅ Caching erst auf 10 Minuten statt 7 Tage gesetzt, jetzt ganz ausgeschaltet. Mal sehen obs wirkt.
- ✅ Anzeige Tagliste auf Blogindex, Bei Filter ( tag:webdev ) entsprechende Headline über den Teasern.
- ✅ Technik: wiederverwendbare Bausteine erstellen. Erstmal über twig-include gelöst.
- ✅ Technik: Suche (Plugin) läuft, finetuning steht aus
- ✅ Design: Darkmode/Lightmode Switch: Ist eingebaut, klappt, braucht aber auch noch Optimierung. Hab mich erstmal dagegen entschieden den Status im localStorage zu speichern (gleiches Thema wie Cookies), d.h. beim Seitenwechsel springt es wieder zurück in den default Light-Modus. Empfehlung für Farbwerte noch gegenprüfen.
- ✅ Technik: 15.01.2023, Popularity/Besucherstatistik deaktiviert, weil unklar ob "GDPR-safe"/ siehe, /admin/plugins/admin > Extras
- ✅ Eigenes Plugin erstellen (für Pixelfed- und Mastodon-Media Feed, klappt)
- siehe auch Changelog
to be continued...
Zwischenfazit
So einfach, wie in der durchaus sehr guten und ausführlichen Doku ist es nicht. Einige Dinge laufen einfach nicht so, wie beschrieben und ich verstehe nicht, warum nicht. Das Caching läuft z.B. noch nicht so wie ich es gern hätte. Und der RSS-Feed ist Murks. Ich hab einige Dinge durch unsauberes "Hacking" so hinbekommen, dass es klappt, aber sinnvoll ist das nicht.
Aktuell hab ich das Gefühl ich wäre besser bedient, wenn ich die Seiten komplett ohne CMS mit Bootstrap aufbaue, weil ich darin auch fitter bin. Weiß noch nicht ob ich das machen werde. Jedenfalls hab ich jetzt einen ganz guten Eindruck von GRAV glaube ich und kann überlegen ob ich es für andere Projekte vielleicht mal einsetze.
Edit 25.01.2023
- Schaue mir jetzt mal Typemill und Pico an, vor allem hinsichtlich der Probleme, die ich mit GRAV hab.
- Außerdem möchte ich das Ganze nochmal durch die Brille eines eventuellen Kunden beleuchten, der ohne Programmierkenntnisse Inhalte seiner Website aktualisieren will.
Edit 28.01.2023
- Weitere Probleme oben ergänzt. Uhrzeit, Adresse von Bildern.
- siehe auch Changelog
Edit 05.02.2023
- Wenn man die Bilder nicht über das Admin-Interface hochlädt, sondern direkt per FTP, dann wird auf der Blogindex-Seite kein Teaserbild angezeigt. Kapiere den Zusammenhang noch nicht. Dort wird auf jedenfall eine gecachte, skalierte Variante verwendet. Mal sehen ob ich das umbaue.
Edit 25.02.2023
feed:
skip: true
um einen Artikel aus dem Feed zu halten. Muss ich noch testen.
siehe