Craft CMS Impressions

Peter Tell
Peter Tellposted on on September 2, 2014

OH CRAFT…

The hunt for a great content management system seems like a mission without end. Digital technology moves so fast, and with it the ever changing market landscape. We’re constantly on the look out for tools that can help us improve our workflow which is why we’ve been excited with the potential offered by Craft CMS.

Craft is a licensed PHP CMS by Pixel & Tonic. These are the guys behind the popular ExpressionEngine plugins Matrix, Assets, and Playa. Using lessons learned from their experience with EE, they created their own brand of CMS centered around their vision of what content is. That’s what Craft really aspires to be: a system that manages content. That may sound like splitting hairs, but in the current landscape of full scaled solutions it’s actually a breath of fresh air.

When we’re building sites, we like to separate the logic from the views and the content from both. The CMS doesn’t need to know how you’re going to build the front end of our platform, it just has to be able to manage and manipulate content well without putting the developer or the structure in a box. This is what we’ve found Craft does really well.

THE FLEXIBILITY

Top level content categories are classified ElementTypes. These are your basic building blocks of content. Craft ships with the defaults Entries, Categories, Users, Assets, Globals, and Tags. Through their plugin system you can extend these indefinitely however. For example, if you’re building an ecommerce portion of your website it might make sense to break products out into their own ElementType.

After you’ve got your high level categories ready to go, you can customize their inputs with Field Types. Field Types are to individual parts of content as ElementTypes are to structure. So you’ve got a couple Entry sections called Staff and Locations. Both of these content types are valuable for your brand, but they’re very different in their makeup. Field Types can be used to define exactly what you need, when you need. Staff can be defined with a Name, Job Title, Bio, and Contact Information. Locations can be defined with Street Address, City, State, Zip.

Where this all comes together is in the relationships. In our above example, if one of your Staff members is a rep for a particular location, you just define a new Field Type associated with the Staff Entries and assign it to Locations. Now when you pull up your locations page you can get the associated staff information with ease. Content is organized the way it makes sense in the backend, and displayed accordingly to the user on the front end.

WHAT THIS MEANS

It means that content is king. Content helps shape and mold the project. Instead of bending content to fit within a system, you are molding a system around the content. The situational aspects for this start to become limitless. The output of the content can be shaped for whatever delivery method you need. So now the same system that is powering your website can power apps, Facebook feeds, etc. It’s extremely powerful.

WE’RE CURRENTLY LOVING

  • Single click updates
  • The overall versatility
  • The flexibility of the plugin structure
  • A fully responsive CMS
  • The fact that content is truly is king

WHAT WE’RE WATCHING

While it has a ton of potential, Craft is still fairly early in its life cycle. There’s a small team of core developers that do a great job, but running the software development cycle of a CMS is no joke. There’s a lot you can do natively and extend with plugins, but the fact that it’s not open source means you are beholden to what Pixel & Tonic decides to include in the platform. For example, I’d love the ability to customize what columns show up in the different sections for Entries, but as of now you can’t.

Other concerns:

  • Scalability – What happens when you have a huge set of field types scattered across a wide array of ElementTypes?
  • Database bloat – Currently all field types without associations get stored in the _content table. What this means is that you could potentially have a lot of underutilized columns
  • Relationship management from one side – The relationships are great, but you can only manage them from one end. Managing them from both sides requires separate Field Types and management. That’s extra work for the end user and bloat in the relationships table.
  • Long term viability – Like any platform, it’s hard to predict the future.

With all of that said, it’s been a joy to develop on this platform so far. The Twig templating language is fun and intuitive, the structure is a pleasure to work with, and it just works. We’re really looking forward to digging in further and seeing the potential Craft has to offer as the feature set increases and the community adoption widens.