It has been 6 plus years since the ExpressionEngine Developer's Toolbox was written about on Smashing Magazine. In that time there have been a lot of additions to the product, add-ons, and community that are worth mentioning. Version 2.1 (first 2.x release for the general public) was released in July of 2010. Version 3.0 is now being talked about in an expectant way and we hope that is an indicator that it will be released sooner rather than later. With the release of Version 2.1 came a TON of new features from EllisLab and the add-on community. I'm not clairvoyant but I would bet on 3.0 not being a complete rewrite so a lot of what we know about ExpressionEngine right now will carry over with the new version.
While ExpressionEngine is still a niche product it is consistently in the top 4-6 CMSs in use. For those of you not familiar with EE it was created by Rick Ellis in 2002. Originally started as PMachine he later changed the name to ExpressionEngine. It is a multi-channel system that allows you to easily create as many channels as you like, and assign custom fields to those channels, all from the control panel. While many different systems have added multi-channel capabilities, ExpressionEngine was created this way from the start so the experience is a bit tighter.
In this article you'll find a collection of resources, add-ons, and information to get you started with ExpressionEngine.
The ExpressionEngine community is good about sharing information when they have figured out a unique way of doing something. There are a plethora of tutorials online now.
The Installation Instructions is where everyone starts. The Post-Installation Best Practices give you some tips on increasing security and configuring the system. The ExpressionEngine User Docs do a pretty good of explaining how to get started.
Mike Boyink is the grandfater of all ExpressionEngine training. I remember seeing his tutorials back in 2007. Since then he has trained 100s of people in a classroom setting and even more through the free tutorials found on his website. Alternatively, if you like would like to support him or just prefer a book to reference, you can buy Mike's book on Amazon.
If video courses are your thing then you'll want to check out Ryan Irelan's Mijiingo. Ryan has done a stellar job on his video courses. He starts with beginner level courses and works up to a more advanced level.
I would be remiss if I did not mention our own blog where we have blogged about our own setup with ExpressionEngine and how to create a blog, to how to make SEO easier in your EE Installs, and more.
Looking for Advanced Tips from a pro? Another Ryan, Ryan Masuga, is in the process of writing the book on advanced techniques when building a site with ExpressionEngine. Everything from security, version control and handling mutliple environments. Ryan is also the founder of Devot-ee, which we'll talk about in a bit.
2.0 The Add-on Community
When the previous article was written there was no central marketplace for selling or buying ExpressionEngine add-ons. That changed with the launch of Devot-ee. Now, instead of having to scour the interwebs trying to find that one specific add-on that does what you need, you can just search Devot-ee. 99% of available add-ons in the ExpressionEngine community are at least listed here, and a good percentage of the commercial add-ons are for sale directly on Devot-ee.
There are some add-on categories that are worth mentioning:
Way back in the day commerce was not ExpressionEngine's strong suit. EllisLab had SimpleCommerce but it is quite limited in functionality. Fortunately that has changed. There are now at least 5 different cart systems that all have different ways of operating.
BrilliantRetail is a powerful commerce platform that supports a number of payment gateways. It has a control panel that allows you to quickly add new products regardless of product type. David and the folks at Codesly even provide a complete demo site with PSDs so you can get your next e-commerce site up quickly.
DevDemon recently purchased Store. We love DevDemon's other products and this is no different. Store allows for you to sell products that reside inside of channels similar to all of your other content. This makes it really easy to provide an e-commerce site that looks different than your typical online store.
CarthThrob is another very flexible cart system. It has bunch of additional functionality like subscriptions and shipping calculators, etc.
Joel Bradbury's Charge is not one that we have had the pleasure of working with yet. But Joel is well respected in the ExpressionEngine community. I would suspect this is a great system.
Two commerce systems by DevDemon?!? Subscriptions is different than store though. As a matter of fact we have a project right now where we are using both in an effort to provide product sales and recurring memberships. Subscriptions provides the recurring memberships functionality. It also has Vouchers, Coupons, Triggers and Actions and integrates with Stripe and Authorize.net.
ExpressionEngine is a multi-channel system that easily allows you to plug in fieldtypes that you need and assign them to channels. This is what makes it so powerful.
EllisLab has added a few fieldtypes to their offering. Among those are a relationships field, grid field, text, text area (Rich Text) and a file field.
Brandon Kelly and his merry team of marauders have a number of fieldtypes that are worth looking at. Instead of taking up my top 10 by listing all of their fieldtypes I'll just add them as a single entry. Their Matrix fieldtype allows for you to create columns and rows of content. Playa is a robust many to many relationship field. WYGWAM is our favorite text editor fieldtype. And they have a field pack of smaller fieldtypes that includes radio buttons, checkboxes, switch, pill and list.
Channel Images is the easiest way of handling image files. It allows you to set up the sizes you need and when the user uploads images it resizes them on the fly. Batch uploads make it super convenient. There are lots of other features like Amazon S3 integration, Process Actions and more.
The list of modules for ExpressionEngine now numbers in the 100s. So what are the top 10 modules you should know about as someone just getting started?
Updater is amazing. Many of you will be reading this are developers in other CMSs where updating a site is as easy as clicking a button. We'll in EE it is not that easy. Updater makes it a bit easier though. You just install it and configure the necessary path information and Updater will allow you to upload the latest package from EllisLab and automates the update process complete with backups. What used to take an hour (or more) now just takes a few minutes.
We like DevDemon's Forms because we can add it as a fieldtype to a channel and make it easy for our clients to add forms on the fly. This simplifies the process for them when they need to collect specific types of information. It makes adding different types of form fields as easy as drag and drop.
We have used Calendar on a number of websites. It adds the ability to create events that repeat. That may mean that they span several days, that repeat every Thursday, or repeat Monday-Wednesday of this week and Friday two weeks later. It really is just as flexible or more flexible than any calendar app we've ever used. And it adds the ability to exclude dates from a calendar entry. So if you have a repeating event every Thursday and Thanksgiving is coming up then you can set an exclude so that they event does not show on that day. Very nice for organizations that need this type of functionality.
We know that most reputable hosting companies are going to have backups for a site, but... when they can't get to their servers or are busy fighting off a DDoS attack you have options if you make your own backups. Backup Pro allows you to send backups off server. So you can send one to another web server or Amazon S3 or similar. So next time a DDoS attack takes down a host you can grab the files and a backup of the DB and deploy at a different host till the original hosting company comes back online.
ExpressionEngine has a Parse Order that Low Schutte has dutifully documented. What this means is that there are times where you will need something out of order. Stash allows you to "rearrange" the order by stashing information as variables for use outside of the normal ExpressionEngine tag pair.
Zoo Visitor is a game changer for ExpressionEngine if you run a website that has lots of members. In version 1.x we had to create fields in the Members section of ExpressionEngine which is separate from the Channels. Zoo Visitor puts this information back into a Channel where it belongs, gives you the power of all of the add-ons that you can use there, and then ties that information to a user in the system.
For those times when you need to add map functionality this module is extremely powerful. It uses the Google Maps API to add all sorts of Map functionality to a website. Need a searchable map for store locations? This add-on has you covered.
With ExpressionEngine you can have a full featured CMS and integrate a first-party forum. The forum brings in all of the user management capabilities of EE so you can build full featured membership sites. If you pick up the Forum module you'll want Iain's Forum theme called Scaffold. It'll save a ton of time making the site and forum match.
I have a love / hate relationship with Structure. I love it because of the way clients react when they see it and how easy it makes adding pages or reorganizing a site. I hate it because it goes against a lot of what I love about ExpressionEngine. But for those times when there is no other way to provide the functionality that you need? Priceless. Structure gives the user a hierarchical view of the site content and allows for drag and drop reordering or moving of content. This is then reflected in the navigation on the site.
Flexible Admin gives you the ability to customize the ExpressionEngine control panel to make it a bit easier for your clients to administrate EE. Normally we give a small subset of client users access as Super Admin. We then create Member Groups that fit the requirements for the site. So perhaps an editor role and an admin role (member is already a member group). Those lesser roles don't need to see all of the capabilities of the Control Panel. ExpressionEngine allows you to turn on/off what features they have access to but you may want to customize the way it is navigated once you have the permissions defined. Flexible Admin allows for that customization.
Channel Videos is a fieldtype but we have put it here because it is so much more. If you are working with video on a site but want to pull in videos from Youtube or Vimeo then Channel Videos will allow you to either search from within the ExpressionEngine control panel or it will allow you to paste in a URL. It then uses the API for either of those ecosystems to pull in all of the information tied to the video (title, duration, comments, etc). And once you have the proper tags in your template it will embed that video in the page so you don't push users off to an external site.
2.4 Audio & Video
Speaking of video, working with Channels and Custom Fields makes doing things like Audio and Video integration quite easy. See an audio player online that you like? Just integrate it with ExpressionEngine by having the Custom Fields necessary to feed the player. Same goes for Video.
Don't want to bother with implementing a custom solution? There are several add-ons on Devot-ee that make it more of a plug and play.
Same goes for video. As I mentioned above, we are partial to DevDemon's Channel Videos. It integrates with Vimeo and Youtube for those looking to offload their video to a social network. But as you can see there are a handful of different options and some supporting add-ons.
ExpressionEngine does not handle multi-lingual sites all that well natively (what CMS does?). The good news is that there are a number of add-ons that can be used for creating multi-language sites.
I only mention it here because it can be done, but this solution is not ideal. Spring for a module that will make your users' experience lightyears better.
Publisher is extremely powerful. It is the only multi-lingual and workflow module for ExpressionEngine. So if you need to be able to flow entries through an approval process and have multi-lingual this is your module of choice. You can previews drafts and a view the diff between a published version and a draft.
Transcribe is pretty simple to use. It handles Multi-language by having an entry per language. It associates them all to a language and to each other. This sounds a lot more complicated than it really is. Transcribe also comes with tags for switching languages and handles which language to display for you. You can also create slugs for the translations for specific words you. Then you use those slugs and depending on the language the user has selected it will display the appropriate translation.
3.0 News and Resources
The user guide really is the #1 resource for working with ExpressionEngine. I don't know anyone that can memorize all of the different tags and parameters. So bookmark it and refer to it often.
While the team at EllisLab are not prolific writers they do try and update the community. Their blog is usually the location where they post update notes and other newsworthy items
Think of EE Hub as ExpressionEngine's very own Reddit. Articles and information get posted, voted up, and commented on.
If you are on Twitter then you will want to monitor the #eecms hashtag.
Stack Exchange has quickly become the place for developers of all sorts to go and get information. ExpressionEngine has it's own section. As a benefit some of the add-on developers are using it as a support tool for their products. This means that searching on Google for an issue with an add-on will typically net you some quality results from Stack Exchange.
Over the last year we have taken the time to document some of the ways we are handling certain content types. We have recorded the user's interaction with those and what fieldtypes we've used. Make sure to subscribe!
The ExpressionEngine community is a small and tight knit one. The ExpressionEngine conference is our chance to gather in one place from around the world, compare notes, and have a beer together. Each year Brad makes sure that the conference has amazing content that both business owners and developers want to hear.
Lea and Emily have been around our community for years. Recently they started branching out and covering other topics outside of ExpressionEngine, but they still have quite a bit of podcast content for you to digest on the topic.
EllisLab hand pick and review websites from the community to showcase on their website. They only update every couple of months but the showcase shows a wide variety of types of sites.
Is a community sponsored showcase website. It is a place where users of EE can share what they have been working on. Think of it as Dribbble for ExpressionEngine.
I hate that we even have to have this section. No CMS is perfect. Most of us are going to specialize and be able to provide solutions for our clients that fit their needs regardless of the CMS provided. Requirements or budget or deadline may dictate one CMS over another. But in an effort to provide you some resources on how the ExpressionEngine compares to some other CMSs take a look at the following.
This article is based on a presentation I did at ExpressionEngine conference in Portland in 2012.
A great write up on an ExpressionEngine Dev's walk through 3 different CMSs
Another friend from the ExpressionEngine community blogged about his experience with working in Drupal. TL;DR is the same as the above articles. Know the system. Know it well. Provide your client's with what they need.
Years ago I had a dream about creating themes for ExpressionEngine. But there won't be any links for themes for ExpressionEngine. The upside is that the power of ExpressionEngine is that you can take any HTML/CSS theme from a site like ThemeForest and in an afternoon integrate ExpressionEngine and have a fully functioning site.
It has been close to 9 years since I initially found ExpressionEngine and started using it. During that time it has undergone a quite a number of changes. But what I am most thankful for is that the flexibility and ease of use for non-programmer types has been maintained. Actually, I would argue that it has been made even easier to use with the many add-ons that have been created by really talented developers. It lessens the need to have a well versed PHP programmer on hand to create fairly complex sites. If you are a Designer/FED I hope you find this list useful. If you are thinking of using EE for a project and need some assistance then contact us