A review of content management system newcomer, Craft CMS.
It was almost this time last year that I blogged about why MODX is our preferred CMS and whilst MODX still holds a warm place in our hearts it was about time that we surveyed the landscape and tried out some of the newer contenders in the content management space.
One such contender is the Craft CMS and so far it has really impressed us, so much so that I think it has nearly superseded MODX as our preferred CMS for new projects. That's a pretty bold statement for a CMS that isn't even a year old, but it's well deserved and below I have listed a few of the reasons why:
Section Types and Content Types
Craft allows us to define different types of content so we can set-up sections as "Channels" or "Structures". A Channel is often used for content like news items or products and a Structure for hierarchical content like the pages in a website (which require tree like hierarchy and nesting). Lastly, we can also use "Singles" for pages like the homepage, singles are, as they sound just for single pages/entries.
Within Channels and Structure sections Craft allows us to set-up "Entry Types", these are used to define the field layout that content editors have available to them and these can be grouped easily into a series of tabs. The screenshot below shows the drag-and-drop interface for organising the fields and tabs to create the interface for content editors.
All this means we're able to create exactly the interface we want for content editors, with no compromise. This has resulted in praise from clients in relation to the ease-of-use and simplicity of the interface for updating their website.
Marketing Manager, 4 Aces Ltd
... I have been most impressed with the CMS, and how Enovate has taken into account not only the visitors of the site but the people in charge of maintaining it.
Craft allows us to define "Global" fields so these are items of content that are the same across the entire site, we've found this useful for storing things like URLs to social media profiles and contact details. It's very easy to then utilise this data within templates.
Craft's configuration files include a simple means to vary configuration variables depending on the URL the site is running on so that's made it easy for us to adapt functionality within the site based on whether it is running on a development server or in production. This has made version control and deployments very straightforward.
I thought the MODX templating syntax was good but Twig is on another level, originally developed as part of the popular Symfony PHP framework, Twig gives us so much power right from the templates we're able to create pretty much whatever logic we require just with simple Twig syntax. This means our templates are DRY and we're able to accomplish some fairly advanced templating very rapidly.
As Twig is a standalone component itself it's something we're able to use on our web application projects too, so having a standard templating syntax across all projects is another plus.
I appreciate that Twig isn't at all unique to Craft, it could actually be integrated into any CMS, even MODX if so desired. But Craft is the first CMS I have come across that has it built into the core. Some may say Twig templates contain too much logic and go against the principles of separation of concerns but given the amount of time it is able to save us, we have no complaints.
Craft is built by a US based company (Pixel and Tonic) that prior to Craft were best known for their plugins for the ExpressionEngine CMS so it's no surprise that the plugin architecture in Craft is excellent and well documented. We've already created several plugins for Craft and these have been both straightforward and fast to develop.
Asset Sources and Asset Transforms
Craft stores images and files in Asset Sources and provides a simple means for us to define image resizing functions called "Asset Transforms" so it's very straightforward to ensure images uploaded by our clients are resized before they are output onto the website. Craft also made is easy for us to host our Asset Sources on Amazon S3 and serve up the files via Amazon's Cloudfront CDN.
Craft is excellent when it comes to defining relationships between elements such as Tags, Entries, Users and Assets. We've found it an absolute breeze to handle some quite complex taxonomies and relationships within Craft. The syntax is very simple so we can output relationships in either direction so from the source element or the target element.
Craft allows us to update the CMS with a single-click, which is just as well as updates are coming thick and fast.
Matrix is a very powerful tool for content editors, essentially it is a field type which allows them to mix several different types of content into a single page. This is what makes Craft a truly modern CMS as it enables a shift away from the rigidity of traditional CMSs which require us to define the content that can be inserted into a page upfront with no flexibility for content editors. With this approach content editors can combine different items of content such as text, images, videos, pull quotes, etc. in any order they wish.
Craft allows content editors to view the page they are editing in real-time so it's possible to see the web page updating as they type. This is a fantastic tool for content editors and gives them a great deal of confidence that the changes they are making will turn out as expected when published.
One of the few areas where Craft has been subject to criticism is the license agreement, which is rather restrictive by CMS standards and has made some reluctant to embrace it. Pixel and Tonic have responded to this criticism and I'm hopeful that the pain points can be resolved in time. It's certainly not going to put us off taking advantage of such a promising CMS.