Skip to main content

Craft CMS Summit 2014

Caft CMS Summit 2014 - Teaser

Am 17. Juni fand der Craft CMS Summit 2014 statt, organisiert von Christopher Schmitt von Environments for Humans. Mit einem Eintrittspreis von 99 US-Dollar war die Teilnahme fairpreisig. Für mich hat sich die Investition gelohnt, denn selten kommt man von einer Konferenz mit so vielen konkreten Ideen zurück.

State of Craft CMS

Brandon Kelly, Gründer von Pixel & Tonic, eröffnete die Veranstaltung mit einem Rückblick auf die Geschichte von Craft. Die Grundidee entstand bereits 2010, und schon damals waren benutzerdefinierte Felder sowie die Live-Vorschau als zentrale Elemente geplant. 2011 folgte eine Marktanalyse sowie die Vision, ein CMS zu entwickeln, das mit allen Inhaltstypen umgehen kann. Unter dem Namen „Blocks" wurde die Idee konkret: Jeder Eintrag sollte seine eigene Inhaltsstruktur mitbringen können.

Besonders lebendig machte den Vortrag der seltene Blick hinter die Kulissen anhand von Screenshots der Basecamp-Nachrichten aus der Entwicklungszeit. Zudem zeigte Kelly die zehn verschiedenen Control-Panel-Designs, die Craft durchlaufen hat, bevor es seine heutige Form annahm.

Die Zeitlinie:

  • Anfang 2012: Private Alpha, Entscheidung für Twig statt einer eigenen Template-Engine
  • November 2012: Private Beta
  • März 2013: Öffentliche Beta und Umbenennung in Craft
  • Juni 2013: Release

Kelly präsentierte zudem aktuelle Zahlen:

  • Über 100 Updates seit der Public Beta
  • 6 Major Releases
  • 82 % der aktiven Control Panels nutzen Craft 2
  • 40 % bereits Craft 2.1
  • 13.600 registrierte Lizenzen
  • 3.300 aktive Websites in den letzten 30 Tagen

Der Umsatz von Pixel & Tonic ist seit Craft 2 regelrecht explodiert.

Außerdem kündigte Kelly eine verbesserte Dokumentation und einen offiziellen Plugin-Store an, der direkt ins Control Panel integriert wird. Craft 3.0 wurde mit einem kurzen Sneak Peek vorgestellt, konkrete Details gab es jedoch noch nicht.

Twig for Designers

Ben Parizek von Barrel Strength Design gab eine Einführung in Twig. Besonders bei Funktionen, Filtern und der Umsetzung des DRY-Prinzips im Templating zeigte sich das Potenzial von Twig, das ich bisher kaum ausgeschöpft hatte.

Custom Matrix with Craft

Anthony Colangelo von Happy Cog erläuterte, warum Crafts Matrix ein echter Paradigmenwechsel in der Inhaltsverwaltung ist. Aufbauend auf Bens Vortrag stellte er Twigs Template-Vererbung vor: Es ist möglich, Default-Templates für Matrix-Blöcke anzulegen und diese mit spezifischen Templates zu überschreiben, sobald bestimmte Kriterien wie Sektionen oder benutzerdefinierte Felder erfüllt sind.

Dieser Vortrag beeindruckte mich am stärksten. Die Folien werde ich noch mehrmals durchgehen.

Real World Craft Tips & Tricks

Trevor Davis von Viget präsentierte praktische Lösungen für den Entwickleralltag. Unter anderem zeigte er, wie man Environment Variables für mehrere Entwicklungsumgebungen nutzt und warum Crafts {% switch %}-Tag if/else-Ketten ersetzen sollte.

Ein nützliches Beispiel sind alternierende CSS-Klassen für gerade und ungerade Einträge mithilfe der Twig cycle-Funktion:

    {% for entry in craft.entries({ section: 'news' }) %}
    <article class="news--{{ cycle(['odd', 'even'], loop.index0) }}">
        <h2>{{ entry.title }}</h2>
        {{ entry.summary }}
    </article>
{% endfor %}

Ein komplexeres Beispiel zeigt den merge-Filter für dynamische Query-Parameter:

    {% set filters = ['type', 'product', 'activity', 'element'] %}
{% set params = { section: 'media', limit: 12 } %}
{# Apply filter? #}
{% if craft.request.segments[2] is defined and craft.request.segments[1] in filters %}
    {% switch craft.request.segments[1] %}
        {% case 'product' %}
            {% set product = craft.entries({ slug: craft.request.segments[2], section: 'product' }).first() %}
            {% set params = params | merge({ relatedTo: product }) %}
        {% case 'type' %}
            {% set params = params | merge({ type: craft.request.segments[2] }) %}
        ...
    {% endswitch %}
{% endif %}
{% set entries = craft.entries(params) %}

Weitere Themen waren Macros, Caching in Multi-Environments und Tipps rund um Matrix.

Element Types and Plugin Development

Ben Croker von PutYourLightsOn erklärte die Architektur von Craft: das Yii Framework, das MVC-Modell und dessen Umsetzung in Craft. Den Hauptteil des Vortrags widmete er der Plugin-Entwicklung mit Element Types und präsentierte ein Beispiel-Plugin:

    <?php
namespace Craft;

class Commerce_ProductElementType extends BaseEelementType
{
    public function getName()
    {
        return 'Products';
    }

    public function hasContent()
    {
        return true;
    }

    public function hasTitles()
    {
        return true;
    }

    public function getSources()
    {
        $sources = array(
            '*' => array(
                'label' => Craft::t('All Products'),
            )
        );
        return $sources;
    }
}

Craft Q&A / Round Table

Die interessantesten Antworten aus der Abschlussdiskussion:

  • Pixel & Tonic arbeitet an einer Lösung für Datenbanksynchronisation
  • Eine JSON-Datei für Felder und Sektionen steht auf der To-do-Liste
  • Matrix innerhalb einer Matrix ist denkbar, jedoch sei die Umsetzung der Benutzeroberfläche schwierig
  • „Lokalisierung" soll in „Sites" umbenannt werden, um mehrere Craft-Sites mit einer Installation verwalten zu können
  • Kommentare kommen nicht in den Core, das ist Aufgabe von Plugins
  • Craft 2.2 erhält die Möglichkeit, Einträge zu duplizieren
  • Die Felder-Layout-Seite soll benutzerfreundlicher gestaltet werden

Fazit

Der Craft CMS Summit 2014 war gut investierte Zeit. Die Kombination aus historischem Rückblick, praktischen Twig-Techniken sowie Ausblick auf Craft 3 und den Plugin-Store vermittelte ein umfassendes Bild des aktuellen Stands und der zukünftigen Entwicklung. Besonders der Matrix-Vortrag von Anthony Colangelo eröffnete mir neue Möglichkeiten, die ich bisher nicht kannte. Solche Events sind selten, und für Craft-Entwickler bot dieser Summit einen echten Mehrwert.

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.