iStock_000069288397_XXXLarge

When it comes to content management systems there are hundreds of thousands of options. Even within a specific language like PHP there’s a vast array of different choices. I’m going to talk about two popular PHP CMS solutions: Craft and ExpressionEngine. I want to discuss why, I think their powerful data modeling, flexibility, and communities make them two of the best choices for a CMS.

CMS or roll your own?

A question I often hear is “when would I use a CMS over rolling-my-own using an MVC framework like CodeIgniter or Laravel?”. This is a good question, and I believe it comes down to one main point: level of control.

Scenario #1

Let’s say your site contains a great deal of content and a secondary function is that users can submit some data to your site. I would recommend a CMS for this. This is because we don’t need to have intricate control of how our database is structured and how our data is validated. We’re okay with how the CMS chooses to do both these things.

Scenario #2

If you would consider your site an application where users submit photos, videos, blog posts, and numerous other types of content, I would recommend rolling-your-own using an MVC framework. This will give you more control over things like database structure and data validation.

Perhaps, one day, your userbase grows to be 10,000+. With that number of users submitting a large amount of data on a regular basis, your application might perform better if custom built using a framework like CodeIgniter or Laravel.

Why Craft and ExpressionEngine over WordPress or something else?

While WordPress and many other CMSs are viable options for managing your site’s content I believe these two are superior for a couple reasons:

Custom post types

Out of the box, WordPress only has three types of content: “Posts”, “Pages”, and “Media”. If you want to add a “Product” content type you’ll need to develop that within the functions.php document or install a third party plugin to do this within WordPress. Craft and ExpressionEngine were built to have custom post types from the very beginning. You can add as many as you’d like without knowing any PHP or installing a third party add-on.

Support

Craft and ExpressionEngine, because they are paid-for applications, include official support in the purchase price. WordPress, being an open-source solution, relies on the community vs. an official channel.

First, a little history

ExpressionEngine is built by EllisLab, a company that also created CodeIgniter, a popular PHP framework for building robust web applications. ExpressionEngine 2.x is built on top of CodeIgniter.

Craft is built by Pixel and Tonic, a company who, interestingly, got started creating third-party add-ons for ExpressionEngine. Their add-ons – Playa and Matrix – are well-built, renown plugins within the ExpressionEngine community.

Powerful data modeling

Custom post types

Both ExpressionEngine and Craft start as a blank slate. They make no assumptions about what kind of data your site will store. Because of this, your models become very powerful. A model is simply a type of content your site stores. You might have a “blog post”, “product”, or “staff member” model.

ExpressionEngine calls these model types a channel while Craft calls them a section. Because each model is single-focused, we can easily create and edit new blog posts, products, staff members, and much more.

Custom fields

Attached to these channels and sections are custom fields. The product model would likely have a “price” and “description” field. You might also find more complex fields like “related products”, “sizes”, and “categories”.

There are many custom fields available for both of these platforms. Anything from color pickers, dropdowns, Google Map integration, and much more. The custom fields paired to your model should make it very clear what data is needed for each model entry.

Relationships

Both Craft and ExpressionEngine have ways to relate models together. For example, you might also have a “collection” model where you can hand choose entries from the “product” model. You could take this further and have a “catalog” model where you hand choose collections that contain products.

With only a few examples, you can see how Craft and ExpressionEngine let you create complex, custom data structures.

Front-end data submission

Craft and ExpressionEngine both have support for front-end data submission. This means you can allow registered users to create and edit entries through the front-end of your website. For example, a user could sign in and submit a job posting or a calendar event. Because Craft and ExpressionEngine let you set the status of an entry, you could force these entries to be in a “review” status until an administrator approves them.

Craft’s advanced features for entries

Craft does offer more advanced functionality when it comes to entry creation and editing in the control panel. Some of these features include:

  • Drafts: Save an entry in-progress without publishing it to the world
  • Entry preview: Share an entry in-progress with coworkers or friends for easy feedback
  • Multiple translations: Is your site multilingual? You can create alternate translations from the control panel easily.
  • Responsive control panel: Easily edit content with your mobile device on-the-go.

These features do exist for ExpressionEngine, but they are paid third party add-ons. Craft has these features baked-in.

Flexibility

Squeaky clean output

Because both of these CMSs make no assumption about your data, they also make no assumption about how you’ll display that data. For that reason, the database output into your templates is very clean. There are no extraneous <div>s or <table>s to worry about. Looping through entries outputs only the content (sans formatting) you request.

Member group permissions

Your site may require any number of member groups to maintain your content. Maybe one group of users can edit products while another can edit products and blog posts. Craft and ExpressionEngine both allow you to have multiple member groups with a number of data model permissions.

Scalability

A good CMS should be scalable, and these CMSs are built for scalability. ExpressionEngine touts a number of partners on their website like Adobe, Apple, Disney, Ford, Nike, and more. While there are no specifics on where ExpressionEngine is used within these corporations, it is a CMS that is trusted amongst massive corporations.

Thriving communities

A CMS is only as strong as the community that backs it. Craft and ExpressionEngine have excellent communities that help make it better in several ways.

Add-ons

As mentioned earlier, both of these CMSs have numerous add-ons that make them more powerful and extendible. Devot-ee is an ExpressionEngine site with hundreds of add-ons provided by the community. Some notable add-ons include CE Cache for advanced template caching, Stash for setting and getting code for your templates, and Expresso Store for e-commerce integration.

Craft, being the “new kid on the block”, doesn’t have quite the robust add-on library, yet. However, sites like Dukt and Straight Up Craft offer a number of plugins to help with Gravatar integration, building navigation, and Google Analytic integration.

Support

A good CMS has multiple ways to get support. Fortunately, on top of providing official support, Craft and ExpressionEngine have a StackExchange. This allows the community to pitch in and help each other with various issues and questions.

Conferences

Additional to a strong add-on and support community, both Craft and ExpressionEngine have numerous conferences throughout the year. These conferences allow developers to learn new things, meet up with others, and talk about how to better the community.

Whether you decide on Craft or ExpressionEngine, both systems have a strong community backing them.

Craft or ExpressionEngine?

We’ve discussed how both of these CMSs are great choices for managing your content, but which one wins over the other? Strictly speaking, there’s no “winner” here. It simply depends on your site needs. Below describes some of the pros of one CMS over the other.

You’ll see that Craft, while very impressive in features, lacks the number of add-ons and longevity that ExpressionEngine has. However, that may be no issue at all to you and your site’s needs.

Craft

  • Responsive control panel
  • Live preview
  • Entry draft/version functionality
  • Has several pricing options to fit your needs
  • Custom entry types (if you have several “types” of blog posts that differ in content/layout)

ExpressionEngine

  • More add-ons for things like e-commerce
  • Been around longer
  • Well known within large companies

Let us set you up

Looking for a CMS integration into your site? Get in touch with us for a quote.