de en
← Back to Articles

Craft CMS Summit 2014

Screenshot der Website des Craft Summit 2014
On June 17, the digital event Craft CMS Summit 2014 took place. Top organized by Christopher Schmitt (Environments for Humans) and with 99 US dollars in a reasonable price range.

For me, the investment was totally worth it as I came out of there with so much knowledge and ideas.

The following Craft CMS Summit 2014 presentations were offered:

State of Craft CMS

Brandon Kelly, the founder of Pixel & Tonic, gave a detailed report on the current state of the craft ecosystem.

First, he went into the history, i.e., how and where the basic idea of Craft CMS came about in 2010. Even then, it was clear that custom fields and live previews would be core elements of the editorial system.

In 2011 it became more concrete, and after market analysis, the vision was issued that one wanted to develop a CMS that could handle all content. With Blocks, a name was quickly found, and the basic idea was that each entry should have its subsections. He then also showed the different Craft prototypes (there were ten different control panel designs). Afterward, he reported about the private alpha at the beginning of 2012, when it was decided to rely on Twig instead of continuing to write its template engine.

The screenshots of the Basecamp messages from the Pixel & Tonic team during development were also exhilarating.

The private beta was followed in November 2012 and the public beta in March 2013, including renaming to Craft and releasing in June.

Kelly next presented some numbers around Craft:

  • Over 100 updates since the public beta
  • 6 Major Releases
  • 82% of active control panels use Craft 2
  • 40% of active control panels already use Craft 2.1
  • 13,600 registered craft licenses
  • 3,300 craft websites in the last 30 days

In a diagram, you can see that Pixel & Tonic's sales have exploded since Craft 2.

In the end, there was a sneak peek at Craft 3, a short live demo of how to edit files directly in the browser.

The following things are planned for the future:

  • Better documentation (an external company will help with this).
  • Craft 3.0 will bring significant innovations.
  • An official plugin store is to be released this year.
  • The plugin store should be integrated into the control panel, and you should be able to install and update plugins directly from it.

Twig for Designers

Ben Parizek from Barrel Strength Design gave a great introduction to Twig. My eyes opened at the latest when it came to functions and filters and how to implement the DRY principles in templating. So far, I had only scratched the surface of Twig's potential.

Custom Matrix with Craft

Anthony Colangelo from Happy Cog showed in his talk why Crafts Matrix is a fundamental paradigm shift in content management.

He built on Ben's talk and introduced Twig's template inheritance and how to manage Matrix blocks in a meaningful way. For example, it is possible to create default templates of matrix blocks and overwrite them with specific templates if certain criteria (sections, custom fields, etc.) are present.

I was impressed by this presentation, and I will go through the slides and examples several times to see what I can implement for my projects.

Real World Craft Tips & Tricks

Trevor Davis (Viget) gave further practical tips. First, he showed how to use Environment Variables to make your website fit for multiple development environments.

Trevor explained that Craft CMS has added switch functionality to Twig and why you should use it instead of If/Else queries if necessary.

Or how to implement different classes for even or odd numbers of posts:

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

Twig's merge filter was also exciting:

  {% 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) %}

Other topics included using macros, caching in multi-environments, variables, a few tips around Matrix, and more.

Element Types and Plugin Development

Ben Croker from PutsYourLightsOn talked about Crafts architecture in his presentation. He covered the Yii framework and what that means for caching, validation, authentication, and internationalization. Then explained the MVC model and how it works in Craft.

After routing, he dedicated himself to plugin development in Craft, including Element Types, and showed an example 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

A summary of the most important answers:

  • Pixel & Tonic is working on a good way for DB synchronization.
  • JSON file for fields/sections is on the to-do list.
  • A matrix within a matrix could come sometime. But it would be challenging to implement this well via UI.
  • Pixel & Tonic is currently considering renaming "Localization" to "Sites" so you can maintain multiple craft sites with one installation.
  • Comments will not be included in the core; this is something for plugins.
  • Craft 2.2 will get the ability to duplicate entries.
  • The fields layout page should become more user-friendly.
Photo from  Thomas Sausen<

Self-employed web developer from Germany who started with WordPress websites in 2005, then moved to ExpressionEngine and lost his heart to Craft CMS in 2013. As the founder of Craftentries, he has been covering the Craft ecosystem since 2015.

Thomas Sausen Web Developer