Ein Inspirations-Streifzug durch andere CMS

17.WordPress Meetup Konstanz | https://kraftner.com/talks

Thomas Kräftner

https://kraftner.com | @kraftner@mastodon.social

WordPress Pain Points

Content Management System

Inhaltstyp Produkt

  • Beschreibung mit Vorgabe für Länge
    • Custom Input für Post Meta, Validierung Länge
  • mehrere Produktbilder für unterschiedliche Teaser
    • nur 1 Beitragsbild, d.h. Custom UI für mehrere Bilder
  • Farbe
    • Custom Color Picker für Post Meta, Validierung RGB
  • Gewicht
    • Custom Input für Post Meta, Validierung Zahl > 0
  • Mehrsprachigkeit
    • Plugin

Warum strukturierter Inhalt?

  • Was ermöglicht er auf rein technischer Ebene?
  • Was ermöglicht er für die Webseite und deren Benutzer?
  • Was braucht es für strukturierte Inhalte?

Technische Ebene

  • Trennung von Inhalten und Ausgabe
  • Optimiertes Editing-UI inkl. Validierung

Beispiele für dadurch mögliche Features

  • Konsistenz von Inhalt forcieren
    z.B. Farbe immer RGB, Gewicht Zahl > 0
  • gezielte Suche in und Filterung nach Feld
  • unterschiedliche Ausgaben
    z.B. Teaser-Element, PDF, JSON-API für Apps
  • Konsistenz von Layout forcieren
    Farbe und Gewicht immer rechts neben Beschreibung
  • einfachere globale Änderungen
    Umbau der Inhaltsstruktur und Template Änderungen, jeweils unabhängig voneinander

Notwendige CMS Features

  • Definition von Struktur (UI, Config-Files, Code)
  • Editing UI
  • Ausgabe (Templates)

Inhaltstypen definieren

Kirby Blueprints - Fields

fields:
  heroImage:
    type: files
    max: 1
  date:
    type: date
    time: true
    default: now
  author:
    type: users
  tags:
    type: tags

Drupal Fields

Kirby Blocks





fields:
  text:
    type: blocks
    fieldsets:
      - heading
      - text
      - image
      - quote
      - list      

Neos Dimensions

Inhalte bearbeiten

Kirby Blueprints Layout

title: Artikel
icon: 📖

columns:
  main:
    width: 2/3
    fields:
      text:
        type: textarea
        size: large

sidebar:
  width: 1/3
  sections:
    
    meta:
      type: fields
      fields:
        heroImage:
          type: files
          max: 1
      date:
        type: date
        time: true
        default: now
      author:
        type: users
      tags:
        type: tags
    
    files:
      type: files

Neos Workspaces

  • "Git für Content" - Branches, merging
  • Workflows:
    • Inhalte vorbereiten
    • Änderungen abnehmen

Inhalte ausgeben

Kirby PHP Templates

<html>
  <head>
    <meta charset="UTF-8">
    <title>
      <?= $page->title()->html() ?> | <?= $site->title()->html() ?>
    </title>
  </head>
  <body>
    
    <header>
      <h1>
        <a href="<?= $site->url() ?>">
          <?= $site->title()->html() ?>
        </a>
      </h1>
    </header>
    
    <main>
      <h1><?= $page->title()->html() ?></h1>
      <?= $page->text()->kirbytext() ?>
    </main>
    
  </body>
</html>

Drupal Views, Blocks, Regions

sehr, sehr viel im UI möglich

Drupal Theming

  • Twig Templates
  • komponentenbasierte Wiederverwendbarkeit von HTML/CSS/JS (Single-Directory Components)

Neos Fusion & AFX

  • eigene Sprache "Fusion" um Daten zu holen, transformieren und zur Ausgabe weiterzugeben
  • AFX Template Sprache, angelehnt an JSX in React
  • interessant aber für meinen Geschmack Overkill für das was man normalerweise braucht

Speicherung und Migration von Inhalten und Konfiguration

Kirby Flat File

Title: Ein interessanter Artikel
----
Date: 2025-05-28
----
Text:

Das ist ein wirklich interessanter Text
  • Textfiles statt Datenbank, eine Page & Assets ist ein Folder
  • einfaches Search & Replace
  • mit Git Änderungen leicht versionier- & nachvollziehbar
  • einzelne Inhalte leicht kopieren, verschieben oder aus Backup holen

Drupal Import/Export/Update

site_uuid: 50e22c09-9645-4a0e-a772-42a0de42eb25
uuid: 0e4dffc0-1bba-4ffb-8e5f-47568bd80968
entity_type: node
bundle: blog
base_fields:
  title: 'Ein Post'
  created: '1748439532'
  url: /blog/2025-05/ein-post
custom_fields:
  field_content:
    -
      value: '<p>Das ist der Inhalt des Posts</p>'
      format: content_format

Inhalt-Export/Import inkl. Assets in standardisiertem Format

Updates & wiederholte Imports ohne Duplikate dank UUIDs

Ökosystem, Governance & Community

Drupal - Das Open Source Musterkind

  • quasi alles (Core & Module) OpenSource und keine kommerziellen Erweiterungen d.h. de facto nur Querfinanzierung oder Freiwilligenarbeit
  • oft gebündelte Arbeit an Community-Lösungen inkl. modulare Abhängigkeiten, dadurch dafür oft komplexes Netz aus mehreren Modulen
  • Drupal Association mit demokratisch gewähltem Board
  • sehr eingeschworene, stabile, internationale Community, wenn auch kleiner als WP
  • Contribution Credit System für Anerkennung

Kirby - Das proprietäre Open Web Paradoxon

  • kein Open Source, Code available mit einmaliger Lizenzgebühr pro Seite, dafür tragfähige Finanzierung trotz sehr kleinem Team von 5 Personen
  • Erweiterungen meistens Standalone-Lösungen, tlw. konkurrierende Lösungen für selbes Problem, tlw. kommerziell, d.h. insgesamt ähnlich WordPress
  • deutsche GmbH ohne Mitspracherecht der Community
  • kleine Community mit starkem DACH-Schwerpunkt
  • (Certified) Partner Network

Neos - Die radikal-perfektionistische Ideallösung

  • Open Source und keine kommerziellen Erweiterungen d.h. de facto nur Querfinanzierung oder Freiwilligenarbeit
  • kein zentrales Repository oder Marketplace für Community Extensions
  • deutscher Verein mit demokratisch gewähltem Vorstand
  • sehr kleine (laut Webseite 68 Service Provider) Community quasi nur DACH-Raum

Gesamteindruck

WordPress ist quasi das Gaffer Tape der CMS.
Weder elegant noch jemals die perfekte, abstrakt "richtige" Lösung, aber man kommt schnell und relativ unkompliziert ungefähr dort hin wo man hin wollte.
Ein durch und durch pragmatisches "Gut genug".

Ganz anders Drupal.
Wo WordPress sagt "Design for the majority" und "Decisions not Options" ermöglicht Drupal bei absolut jeder Frage eine eigene Entscheidung zu treffen.
Drupal ist also mehr ein CMS-Baukasten-System mit dem man kann die eigenen Bedürfnisse zu 100% erfüllen kann, auch wenn der Weg dort hin schnell sehr anstrengend und verwirrend werden könnte.
Wer das aber wirklich braucht für den ist Drupal sicherlich ein Traum.

Neos ist der Klugscheißer unter den CMS Systemen.
Die technischen Kernaspekte eines CMS wurden bis ins Detail zerlegt und auf die perfekteste Weise implementiert.
Leider führt das aber auch oft dazu, dass es sich mehr wie eine theoretische, akademische Arbeit des Fachbereichs Informatik anfühlt. Bei allem außer der Technik (z.B. Dokumentation, UI/UX, Barrierefreiheit oder schlichtweg Verbreitung) schwächelt Neos leider.
Alle die nach technischer Perfektion statt Pragmatismus suchen sollten mit Neos dennoch glücklich werden.

Kirby schafft meistens die schwere Balance zwischen Mehrheitsbedürfnissen und Individualität.
Kein enges Korsett aber doch locker aus den Erfahrungen der Praxis heraus gesetzte Leitplanken mit ganz viel Liebe zum Detail, handwerklicher Arbeit und dem Open/Indie Web.
Wenn sich eine Webseite innerhalb des Funktions­umfangs von Kirby umsetzen lässt macht es vermutlich mit keinem anderen System mehr Spaß.

Danke für die Aufmerksamkeit!

Fragen? Anmerkungen?

Eigene Erfahrungen mit diesen oder anderen CMS?

Thomas Kräftner

https://kraftner.com

@kraftner@mastodon.social

Nicht zuletzt durch das WP Drama angeregt habe ich mal wieder Lust bekommen mir anzusehen was die anderen CMS System so treiben. Meine Zugang war dabei primär welche Pain Points ich persönlich in WP sehe und was es da für interessante andere Ansätze bei anderen CMS gibt.

Wie der Name sagt sind CMS dafür da Content zu verwalten. Also fangen wir mal da an. Für viele Leute ist das Killerfeature von WP in der Block-Ära dass man beim bearbeiten sieht wie die Webseite im Frontend aussehen wird. Also dass man Layout und Inhalte gleichzeitig sieht und bearbeitet. Für mich ist das oft gleichzeitig die größte Achillesferse von WP. Wo genau habe ich ein Problem damit? Stellen wir uns folgenden Inhaltstyp vor und wie man den in WP umsetzen könnte:

Man sieht schon, dieser gar nicht so komische Inhaltstyp lässt sich in WP recht schlecht abbilden. Für ein passendes Editing-UI braucht man Custom-Development oder zumindest Plugins wie ACF. Manches wie Mehrsprachigkeit ist in WP quasi gar nicht oder nur sehr mühsam sauber lösbar. Insgesamt kommt WP bzw. zumindest WP Core bei allem was strukturell kein klassischer Blogpost oder eine generische Seite ist oft an seine Grenzen.

Aber nochmal kurz: Warum wollen wir einen Inhaltstyp in dieser Form überhaupt? Brechen wir das in 3 Schritte auf:

Hier also ein paar Ansätze aus anderen CMS. Sehr high level, nicht wie das komplett geht, sondern was netter funktioniert als in WP:

Inhalte in YAML Dateien einfach definierbar Als Textdateien dann auch leicht versionier- und mergebar.

UI um eigene Content Typen und Felder zu definieren Einstellungen leicht importieren/exportieren -> Versionierung, Migration (Ähnlich ACF Export/Import/Sync nur für alles)

Blöcke ähnlich WP, nicht ganz so flexibel, dafür einfacher zu bedienen. Die Kombination aus Feldern und Blöcken ermöglicht strenge Vorgaben oder mehr Flexibilität je nachdem. Außerdem deutlich leichter erweiterbar ohne Build Chain

Was ich bisher nicht erwähnt habe ist dass Mehrsprachigkeit sowohl bei Kirby als auch Drupal und Neos ein Kernfeature ist. Neos geht dabei mit dem Konzept von "Dimensions" sogar noch einen Schritt weiter. Ohne hier jetzt ins Detail zu gehen: Inhalte in andere Sprachen zu übersetzen bedeutet andere Varianten desselben Inhalts zu haben. Aber Sprachen sind nicht die einzige Situation wo man so einen Bezug brauchen kann. Man kann auch die Situation haben dass ein Inhalt z.B. obwohl immer Deutsch für Deutschland und die Schweiz anders sein muss. Z.B. wegen der Währung oder weil je nach Land andere Produkt-Features verfügbar sind. Neos ermöglicht z.B. Sprache und Markt als zwei verschiedene "Dimensions" anzulegen. Dann kann man Inhalte für spezifische Kombinationen definieren aber auch Fallback-Regeln wenn etwas überall gleich ist. Das ist gleich auch ein wunderbares Beispiel dafür wie Neos immer wenn es Bedarf an einem Feature wie Mehrsprachigkeit gibt nicht nur das Feature implementiert sondern gleich eine generische Lösung die auch alle potenziellen Extremfälle mit abbildet implementiert.

Backend Layout in gewissem Rahmen auch in YAML definierbar

Etwas das man doch auch immer wieder braucht ist größere Änderungen an verschiedenen Inhalten vorzubereiten. Z.B. um bei einem Produktlaunch die Produktseite, den zugehörigen Supportbereich und eine Newsmeldung gleichzeitig zu veröffentlichen. Und vor der Veröffentlichung mit anderen gemeinsam an diesem Set an Änderungen zu arbeiten. Hier bietet Neos Workspaces die ähnlich wie Git Branches funktionieren.

Die Templates sind sehr nahe an dem was man von WP gewohnt ist. Aber es gibt eine saubere, einheitliche API die man auch leicht selbst erweitern kann. Was ich daran schön finde ist dass man das HTML individuell kontrollieren kann anstatt auf fremdbestimmtes CMS-Markup angewiesen zu sein.

Sehr mächtige Tools um komplexe Datenabfragen und Transformationen zu machen. Aber steile Lernkurve für etwas das nur in Neos existiert und für viele einfach Use Cases die Sache eher verkompliziert. Deswegen gehe ich darauf jetzt gar nicht weiter ein.

Daten in WP aus lokaler Umgebung oder Backup zu exportieren und importieren ist eher mühsam. Einserseits weil die finalen URLs für z.B. Bilder im Post Content etc. immer mit drinnen stecken und man daher immer in der Datenbank herumfummeln muss. Andererseits weil Posts oder Media keine eindeutigen IDs haben wodurch bei Export und Import z.B. ID-basierte Referenzen leicht kaputt gehen. Genauso mühsam ist es Einstellungen z.B. zwischen lokaler Entwicklung, Staging und Live Server zu bewegen. Tlw. oder komplett. Das können andere CMS tlw. deutlich besser:

Nach all diesen technischen Dingen und Features jetzt abschließend noch zu etwas ganz anderem. Nachdem einer der Gründe warum ich mir überhaupt andere CMS angesehen habe das WP Drama der letzten Monate war hat mich auch interessiert wie die Ökosysteme sowie Macht- und Organisationsstrukturen rund um andere CMS funktionieren. WordPress Core ist ja Open Source und wird durch Freiwillige, wenn auch oft als gesponsorte Fulltime-Entwickler entwickelt. So auch viele Plugins. Gerade größere Plugins, tlw. auch für sehr essenzielle Dinge wie z.B. Custom Post Types oder Formulare sind aber kommerzielle Produkte. Das bedeutet einerseits stabilere Entwicklung dank tragfähiger Finanzierungsmodelle, andererseits aber auch Fragmentierung und mangelndes Interesse an Kooperation und Standardisierung. Manchmal leider sogar weniger Interesse an Usability oder Sicherheit als an mehr Profit. Wie sieht das also anderswo aus?