Craft CMS Summit 2014

Für mich hat sich die Investition total gelohnt, da ich mit so viel Wissen und Ideen da rausgekommen bin.

Folgende Präsentationen Craft CMS Summit 2014 wurden geboten:

State of Craft CMS

Brandon Kelly, Gründer von Pixel & Tonic, gab einen ausführlichen Bericht über den aktuellen Stand des Craft Ökosystems.

Erst ging er auf die Historie ein, also wie und wo es zu der 2010 zu der Grundidee von Craft CMS kam. Schon damals war klar, dass benutzerdefinierte Feld und die Live-Vorschau Kernelemente des Redaktionssystem werden sollen.

2011 wurde es konkreter und nach einer Marktanalyse wurde die Vision ausgegeben, dass man ein CMS entwickeln wolle, dass mit allen Inhalten umgehen könne. Mit Blocks hatte man schnell einen Namen gefunden und als Grundidee verfolgte man, dass jeder Eintrag eigene Untersektionen haben solle. Er zeigte dann auch die verschiedenen Craft-Prototypen (es gab 10 verschiedene Designs des Control Panels). Danach berichtete er über die Private Alpha Anfang 2012 in der dann entschieden wurde, auf die Twig zu setzen, anstatt weiter an einer eigenen Template-Engine zu schreiben.

Erheiternd waren auch die Screenshots der Basecamp-Nachrichten des Pixel & Tonic-Teams während der Entwicklung.

Im November 2012 folgte die Private Beta, ab März 2013 die öffentliche Beta mitsamt Umbenennung in Craft und Veröffentlichung im Juni.

Kelly präsentierte als Nächstes ein paar Zahlen rund um Craft:

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

In einem Chart konnte man sehen, dass der Umsatz von Pixel & Tonic seit der Veröffentlichung von Craft 2 regelrecht explodiert ist.

Am Ende gab es noch einen Sneak Peak auf Craft 3, eine kurze Live-Demo wie man Dateien direkt im Browser bearbeiten können wird.

Folgende Dinge sind für die Zukunft geplant:

  • Bessere Dokumentation (ein externes Unternehmen wird dabei helfen)
  • Craft 3.0 wird große Neuerungen mit sich bringen
  • In diesem Jahr soll ein offizieller Plugin-Store veröffentlicht werden
  • Der Plugin Store soll im Control Panel integriert sein und man soll direkt daraus Plugins installieren und aktualisieren können

Twig for Designers

Ben Parizek von Barrel Strength Design gab eine gelungene Einführung in Twig. Spätestens als es um Funktionen und Filter und wie man die DRY-Prinzipien im Templating umsetzen kann, öffneten mir die Augen. Bisher hatte ich das Potential von Twig nur angekratzt.

Custom Matrix with Craft

Anthony Colangelo von Happy Cog zeigte in seinem Vortrag, wieso Crafts Matrix ein echter Pardigmenwechsel in der Verwaltung von Inhalten ist.

Er baute auf Bens Vortrag auf und stellte Twigs Template-Vererbung und wie man sinnvoll Matrix-Blöcke verwaltet vor. So ist es möglich Default-Templates von Matrix-Blöcken anzulegen und diese mit spezifischen Templates zu überschreiben, falls bestimmte Kriterien (Sektionen, benutzerdefinierte Felder etc.) vorhanden sind.

Dieser Vortrag hat mich nachhaltig beeindruckt und ich werde die Folien und Beispiele noch mehrmals durchgehen, um zu sehen was ich davon alles für eigene Projekte umsetzen kann.

Real World Craft Tips & Tricks

Weitere praktische Tipps gab es von Trevor Davis (Viget). Zum einen zeigte er, wie man mit Enviroment-Variables seine Website fit für mehrere Entwicklungsumgebungen macht.

Craft CMS hat Twig die Switch-Funktionalität hinzugefügt und warum man diese ggf. statt If/Else-Abfragen nutzen solle, erklärte Trevor.

Oder aber wie man unterschiedliche Klassen bei geraden oder ungeraden Beitragszahlen realisieren:

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

Spannend war auch der Merge-Filter von Twig:

{% 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 der Einsatz von Macros, Caching in Multi-Environments, Includes mit Variablen ein paar Tipps rund um Matrix und mehr.

Element Types and Plugin Development

Ben Croker von PutsYourLightsOn hat in seinem Vortrag über Crafts Architektur gesprochen. Er behandelte das Yii Framework und was dies für Caching, Validation, Authentication und Internationalisation bedeutet. Erklärte dann das MVC-Modell und wie es in Craft functioniert.

Nach dem Routing widmete er sich dann der Plugin-Entwicklung in Craft mitsamt Element Types und zeigte auch 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

Eine Kurzzusammenfassung der wichtigsten Antworten:

  • Pixel & Tonic arbeitet an einer guten Methode für DB-Synchronisation
  • JSON-Datei für Felder/Sektionen steht auf der Todo-Liste.
  • Matrix innerhalb einer Matrix könnte irgendwann kommen. Aber das gut per UI umsetzen sei schwierig.
  • Aktuell wird überlegt "Lokalisation" in "Sites" umzubenennen, damit man mehrere Craft-Sites mit einer Installation pflegen kann.
  • Kommentare werden nicht in den Core kommen, dies sei was für Plugins.
  • Craft 2.2 wird die Möglichkeit bekommen, Einträge zu duplizieren.
  • Die Felder-Layoutseite soll benutzerfreundlicher werden.
Foto von Thomas Sausen

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.

Thomas Sausen

Webentwickler