Skip to main content

Neu in Craft CMS 1.3

Teaser zum Artikel "Was gibt es Neues in Craft CMS 1.3?"

Lange Zeit forderte die Community, dass Pixel & Tonic das beliebte ExpressionEngine-Plugin Matrix in Craft integriert. Heute ist es so weit.

Das Konzept wurde dabei nicht einfach übernommen, sondern sinnvoll erweitert. Jedes Matrix-Feld kann verschiedene Block-Typen mit individuellen Feldern enthalten. Und das Beste: Matrix wird nicht als kostenpflichtiges Plugin verkauft, wie ursprünglich geplant, sondern ist fester Bestandteil von Craft 1.3.

Der Weg zu Matrix

Matrix war vom ersten Tag der öffentlichen Beta an das meistgewünschte Feature der Community. In frühen Updates wurde es mehrfach erwähnt, zunächst mit dem Hinweis, dass es als kostenpflichtiges Plugin erscheinen würde. Für viele Entwickler war das ein Grund, Craft noch nicht für Kundenprojekte einzusetzen.

Dass Matrix nun kostenlos und als Core-Feature erscheint, ist deshalb eine doppelte Überraschung. Pixel & Tonic hat außerdem angegeben, dass die Integration nur wenige Wochen gedauert haben soll. Die meiste Arbeit sei in die Benutzeroberfläche geflossen, was man dem Ergebnis eindeutig ansieht.

Matrix

Matrix-Felder bestehen aus frei definierbaren Inhaltsblöcken. Jeder Block kann beliebig viele Felder enthalten, passend zu dem Inhalt, den man abbilden möchte. Innerhalb eines Matrix-Feldes lassen sich beliebig viele Blöcke hinzufügen, anordnen oder löschen.

Damit werden Artikel möglich wie bei The Verge, die aus Texten, Zitaten, Galerien oder Tweets bestehen, ohne dass die Reihenfolge dieser Elemente vorgegeben ist. Oder ein Foodblog, der neben normalen Texten auch Rezepte als eigenen Block-Typ enthält.

Wie alle anderen Feldtypen lassen sich Matrix-Felder an Einträgen, Assets, Tags, Nutzern oder Globals anhängen. In der Datenbank erhält jedes Matrix-Feld eine eigene Inhaltstabelle, wird aber ansonsten wie alle anderen Feldtypen gespeichert.

Matrix vs. WordPress-Shortcodes

Wer WordPress kennt, denkt bei flexiblen Inhaltsblöcken sofort an Shortcodes. Der Unterschied ist erheblich: Shortcodes sind für Redakteure oft ein Buch mit sieben Siegeln. Sie müssen die richtige Syntax kennen, Klammern setzen und Parameter korrekt benennen. Fehler passieren leicht, und das Ergebnis ist erst nach dem Speichern sichtbar.

In Craft funktioniert das anders. Per Klick wählt der Redakteur einen Block-Typ aus, füllt die vorgegebenen Felder aus und ordnet die Blöcke per Drag & Drop. Kein Markup, keine Syntax, keine Fehlerquellen. Entwickler definieren das Markup für jeden Block-Typ einmalig im Template und behalten so die volle Kontrolle über den Quellcode.

Matrix im Template

Der neue switch-Twig-Tag, der ebenfalls mit Version 1.3 erscheint, passt perfekt zu Matrix. Statt verschachtelter if-Abfragen lässt sich damit sauber zwischen den verschiedenen Block-Typen unterscheiden:

    {% for block in entry.matrixField %}
    {% switch block.type %}
        {% case "text" %}
            {{ block.text }}
        {% case "quote" %}
            <blockquote>{{ block.quote }}</blockquote>
        {% case "image" %}
            {{ block.image.first().getImg() }}
    {% endswitch %}
{% endfor %}

Vereinfachtes Beispiel zur Illustration. Die genaue Implementierung hängt von den definierten Block-Typen und Feldern ab.

Weitere Neuerungen

Ebenfalls neu ist der Lightswitch-Feldtyp, ein einfacher Ein/Aus-Schalter für boolesche Werte. Felder lassen sich ab Version 1.3 außerdem als Sortier- und Filterparameter beim Abrufen von Elementen verwenden, was deutlich mehr Flexibilität bei Elementabfragen bietet.

Meine Meinung

Umso erfreulicher ist es, dass Matrix nun da ist und nicht als kostenpflichtiges Plugin, sondern als Teil des Cores. Für mich war es das fehlende Puzzlestück, um Craft endlich auch in Kundenprojekten einzusetzen.

Als im September Eintragstypen und Sektionstypen ihren Weg ins CMS fanden, dachte ich mir: „Jetzt fehlt nicht mehr viel." Ab Version 1.3 kann ich Craft endlich nahezu bedenkenlos empfehlen.

Thomas Sausen

Webentwickler

Selbstständiger Webentwickler, der 2005 mit WordPress-Websites anfing, dann zu ExpressionEngine wechselte und 2013 sein Herz an Craft CMS verlor. Als Gründer von Craftentries, berichtet er seit 2015 über das Craft-Ökosystem.