Over the years , I've used quite a few of
these content management systems, in addition to building a variety of
custom solutions using tools such as the Zend Framework.
ExpressionEngine Enhances PHP Content Management with Framework Flexibility
Over the years , I've used quite a few of
these content management systems, in addition to building a variety of
custom solutions using tools such as the Zend Framework.
Both approaches have their drawbacks, with the former never seeming to
offer an adequate level of flexibility while the latter requires a
great deal of redundant coding and long-term maintenance. Granted,
neither approach is intended to cater to every desire, but can you
blame me for wanting such a solution anyway?
Indeed, I concluded that no solution
effectively offered both the fundamental features of a content
management system and the flexibility of a web framework.Using
ExpressionEngine during the past few months on a major project that
involves a great deal of multimedia and downloadable content, an
existing membership base numbering in the thousands, and a complex
e-commerce configuration, I'm starting to believe perhaps you can have
your cake and eat it too.
ExpressionEngine Defined
Although ExpressionEngine is considered the
latest significant entry to the crowded PHP content management system
market, the company behind ExpressionEngine is anything but
inexperienced when it comes to developing powerful software. In fact, EllisLab is the creator of pMachine, which was one of the first PHP-driven content management systems and was the precursor to ExpressionEngine. They also created and lead the CodeIgniter
project, one of the world's most popular open source web frameworks.
However, you don't need any prior knowledge of CodeIgniter in order to
begin using ExpressionEngine, or even of PHP for that matter. You can
build a fairly powerful web site using the content management tools
made available through its web-based interface.
ExpressionEngine does differ significantly
from other leading PHP content management systems in its licensing.
Although a free version is available (known as the Core License), you
can use it only in conjunction with "personal, non-commercial, and
non-profit activities." For commercial purposes, you'll need to
purchase a commercial license, which currently runs $249.95. Frankly, I
found this a small price to pay given the significant time that key
ExpressionEngine features saved me. These features are discussed in
detail next.
Key ExpressionEngine Features
Hundreds of features are bundled into ExpressionEngine , however I found a few particularly striking as compared with what other solutions offer.
Intuitive Content Management
ExpressionEngine treats all content as a
Weblog, pure and simple. Therefore, if you were tasked with creating a
site that cataloged information about books, DVDs, and video games, you
would probably create three Weblogs, one for each product type. Of
course, each Weblog would consist of custom fields specific to the
content it tracks. For instance, each book entry would probably contain
fields used to represent the book's title, ISBN, author, page count,
publication date, price, and table of contents. ExpressionEngine allows
you to easily customize these fields for each Weblog, defining not only
the field title but also the type of form control that should be used
to manage the data. Figure 1 depicts just such a set of fields for a
book-related Weblog.
A Flexible Templating Engine
When you've defined the Weblog fields and
added a few entries, you can create the templates, which will format
each Weblog entry within the web site. This is accomplished using a
highly intuitive template engine, which allows you to refer to the
Weblog field names within your templates, as demonstrated below:
<div class="book-summary">
<img src="/images/products/{segment_3}.png" />
<h3>{title}</h3>
<p>
<b>By</b>: {authors}<br />
<b>Publication Date</b>: {entry_date format="%F %d, %Y"}<br />
{if isbn != ""} <b>ISBN</b>: {isbn} <br /> {/if}
{if pages != ""} <b>Pages</b>: {pages} {/if}
</p>
{summary}
</div>
Rendering this template to the browser produces output similar to Figure 2.
These templates are managed within a web-based console,
and can be easily configured to rely upon a unified page header,
footer, and context-specific sub-templates, such as sidebars.
Finally, if the native template tag
capabilities don't suffice, you are free to integrate both PHP and
custom SQL queries into your templates, stretching the boundaries of
content management as far as you'd like them to go.
A Vibrant Extension Ecosystem
The ExpressionEngine web site currently lists
142 official plugins, modules, and extensions, with hundreds more
available for download from third-party web sites. Among others, you'll
find plugins capable of communicating with the Amazon Associates API,
integrating Flash, adding RSS feeds, providing members with a wiki,
enhancing content search capabilities, and much more.
Powerful Member Management Features
These days, almost every site offer s some
level of membership-specific services. However, building and
maintaining an infrastructure capable of managing large member bases
can be incredibly time consuming. ExpressionEngine removes many of
these difficulties by providing you with native registration and login
features, the ability to create custom membership fields, and the
ability to communicate with users via a mass-mailer feature.
Other ExpressionEngine features also enable
you to restrict content to registered members easily and even to assign
members to specific membership categories, which make it possible to
further segment content access.
The Future of ExpressionEngine
ExpressionEngine 2.0 is currently in beta and
promises dozens of new features, including a native image editor,
updated interface, native jQuery support, and improved management of
third-party extensions.
Conclusion
ExpressionEngine does a pretty impressive job
of treading the fine line between offering users the stability of a
content management system and the flexibility of a web framework. If
other solutions aren't fitting your exacting needs, consider
ExpressionEngine. As always, if you use ExpressionEngine in an upcoming
project, or have something extra to add based on your prior experiences
using this particular solution, please tell us about it in the comments!
|