A few months ago I wrote a series of articles highlighting PHP-driven
content management systems and frameworks,
and I singled
out ExpressionEngine as one particularly impressive solution that
effectively balances the best features of both. This popular Web
development solution recently took another major step forward with the July 12
release of ExpressionEngine 2.1,
the product's first major upgrade in
several years. Version 2 sports a number of new features and significant
improvements over its predecessor, many of which I'll highlight in this article.
The company behind ExpressionEngine, EllisLab,
Inc., also happens to be the creator of another popular Web development
solution known as CodeIgniter. As EllisLab
President Leslie Camacho discussed during last year's ExpressionEngine CodeIgniter
European Conference keynote, the blurring line between website and Web
application prompted the company to reconsider the strategy for building
ExpressionEngine 2, concluding that rebuilding the product as a CodeIgniter
application was the most effective way to accommodate the increasingly
sophisticated needs of developers.
This move will likely have several positive consequences, notably
EllisLab's ability to more effectively evolve both products thanks to the wide
range of new use cases which will inevitably arise due to the integration.
Further, ExpressionEngine's new status as a CodeIgniter application greatly
reduces the overhead involved in extending ExpressionEngine thanks to the
ability to integrate multiple CodeIgniter applications. The
ExpressionEngine community also gains access to a great deal of existing documentation and
other CodeIgniter community resources.
Redesigned Control Panel
ExpressionEngine 1.X's control panel is packed with tools capable of managing
nearly every conceivable aspect of a website. However, navigating to
those tools can be a bit tedious because many are buried deep within the interface.
The ExpressionEngine team clearly acknowledged the amount of time site
administrators spend working within the control panel by improving and streamlining the interface (see Figure 1), even going so far as
to hire internationally recognized design expert Veerle Pieters to participate in the
redesign (Veerle talks about the project in an EEInsider interview).
ExpresionEngine 1.X supported the ability to manage templates via the
Web-based control panel and also via text files, which could be updated using an
IDE such as Dreamweaver. However, it was an either/or proposition, meaning you
either used the Web-based interface or an IDE; there was no simple way to
synchronize the two repositories without purchasing a third-party module or
devising some other custom solution. Further, new templates had to be created
and initialized using the control panel, making for a tedious and time-consuming
process when developing large sites.
All such disadvantages have been erased in version 2, with ExpressionEngine
now capable of automatically detecting not only the addition of new templates to
the designated file-based repository and updating the site accordingly, but also
detecting the addition of entirely new template groups. Further,
ExpressionEngine can determine when the database and file repositories are
out of sync, and it provides you with an easy tool for making sure everything is
Integrated File Manager and Image Editor
One of the biggest gripes about 1.X was the limited access to a basic file
upload and management interface. Because Web publishing has evolved far beyond
posting solely text and graphics, a great deal of effort was put into improving
EE 2's file management capabilities, with a global file manager available in the
new release (see Figure 2). This manager organizes all uploaded files according to title, size,
type, and publication date, and gives you the ability to categorize files
according to topic or other variable.
Also gone is the need to invest in expensive or complex image editing tools
if your needs are limited solely to basic graphic editing tasks such as
cropping, resizing and rotating. Version 2 includes a basic image editor
capable of carrying out all of these tasks.
Accessories represent a new type of ExpressionEngine add-on, offering a
convenient way to present custom information to control panel users. For
instance, your marketing department might desire an easy way to view a certain
set of traffic-related statistics. By encapsulating this information within an
Accessory Add-On, you can not only aggregate and format this information to suit
marketing's express needs, but also make it readily available to them via the
control panel. Further, you're not limited to presenting
ExpressionEngine-specific information; you can create Accessories
capable of pulling information from any third-party source, such as Google
One of the biggest surprises about ExpressionEngine 2 is EllisLab's decision to no
longer offer a trial version, instead moving to a model that provides a "100%
money-back guarantee" within 30 days of purchase. The rationale behind this move isn't
readily apparent, although one would presume it is intended to combat piracy.
However, it will almost certainly reduce the appeal of giving the new product a
Regardless, the ExpressionEngine pricing structure remains quite low for what you receive
in return, given the commercial version's $299.95 price tag and a $149.95
arrangement for non-commercial purposes. A "Freelancer License" is available for
a mere $99.95 for individuals and businesses with three employees or fewer (in
addition to other restrictions discussed on the website). Further, 1.X users
with active download accounts can upgrade to version 2 for a just $50.
The features discussed in this article are just a few of the literally
hundreds of new features made available with the ExpressionEngine 2 release.
Whether you're an experienced 1.X user who hasn't yet taken the time to
investigate the new version, a CodeIgniter guru looking to capitalize on your
abilities within the Web publishing market, or a PHP developer interested in
using truly best-of-breed technologies created with your favorite language,
ExpressionEngine is well worth a look.