My hope in starting this post is to create somewhat of a mini-series in my dealings with Ellis Lab’s Expression Engine on my latest project, Cragßeta.com. Hopefully laziness won’t get the best of me, and I’ll continue down this path for a while.

From PHP-Nuke to Mambo, Joomla to Serendipity, and eventually onward to Wordpress, I have been around Content Management Systems for a while now. I’ve always loved the ability to separate design from content; yet at the same time I felt like the CMS products I was using just didn’t really fit the bill for the project at hand. As these CMS products matured over the years, more and more plugins have become available to aid in rapid site development. Even with all of these innovations and “upgrades”, I still felt very confined by the “hacked together” nature of these web-authoring enviornments. Enter: Expression Engine.

After a brief stent with Expression Engine 1.52 Core, I dropped some dough on the full-blown product and it’s been an incredible change of pace. A word of truth, if you aren’t comfortable creating XHTML templates and homegrown CSS, Expression Engine may not be your next CMS of choice — but for those of you that can handle the madness, it’s incredibly robust. The true power of Expression Engine lies in its ability to house multiple weblogs and create custom fields for each respective weblog. Think of a weblog as nothing more than a container of information — a repository, and you’ve got the picture. What’s even more exciting is how easy it is to extract content from these weblogs and embed it into your homegrown XHTML structure.

To give you an idea of how easy it is to extract information from a weblog and display it in a template, lets look at the following code:

{exp:weblog:entries limit="1" weblog="trails"}
<title>CragBeta.com | {title}</title>
{/exp:weblog:entries}

The first line of code tells EE to pull a single weblog entry from the TRAILS weblog. If you do not set the limiter to one, it will loop through all of the weblog entries. The second line is an XHTML Title tag. We are just creating a simple Breadcrumb for navigational purposes. Using the {title} command, we’re telling EE to place the Title of the extracted weblog post in the placeholder we have created for it. The third line simply closes the preceding EE tag. Although {title} is a global variable in EE, the custom fields I mention earlier can easily be referenced by using nothing more than their field name.

EE Custom Fields

When creating custom weblog fields as shown above, a field name is created to aid in placement into the template you are creating. There are quite a few options to choose from when creating custom fields. EE even has support for creating relationships between different weblogs.

One of the most pleasant surprises I’ve come to appreciate so far in my dealings with EE is their incredible user-community and documentation. The forum is monitored round-the-clock by trained professionals and community alike. The online documentation is superb, with a knowledge base and a wiki. There is a wealth of information at your fingertips if you decide to take the plunge.