When it comes to building a website on ExpressionEngine, I do my best to use as much of the platform’s built-in functionality as possible. In other words, I don’t like to go about installing third party add-ons willy-nilly. After all, the more add-ons I install, the more I have remember when it comes time to perform updates.
In addition, I’ve found that implementing and relying on too many add-ons can sometimes lock you into a particular method for developing and managing a website, which might be problematic down the road if/when you do a redesign. On the other hand, relying more on EE’s built-in capabilities can sometimes result in a more flexible website, meaning future redesigns are less time-consuming. (Although let’s face it: all redesigns are time-consuming in their own way.)
That being said, there are a number of EE add-ons that have become almost indispensable to me, that have become de facto parts of my EE toolkit. That’s not to say that I use all of them on every website that I develop — you always need to evaluate each website’s unique requirements so as to know which add-ons to install, and just as importantly, which add-ons to not install.
However, each of the add-ons listed below makes various facets of EE-based website development a little easier and the EE-powered sites that I develop cooler, more user-friendly (for both clients and their customers), and just more solid all around.
Modules are the “biggest” addons in EE, as they add completely new, large-scale functionality to an EE-powered site. Many modules have their own screen in the control panel, which allows you to perform functions specific to a particular module. Also, many modules have template tags, which allow you to implement and display that module’s functionality and data on your website.
- Freeform — EE comes with an “Email” module that lets you set up contact forms, but they’re pretty basic. Freeform, on the other hand, lets you create much more complex form with custom fields, file transfers and attachments, custom messages, and so on. What’s more, submissions are stored in your EE database, so you can sort, filter, and export them to your heart’s content.
- Low NoSpam — This module works with either Akismet or TypePad AntiSpam — you pick which one — to protect your website from comment spam. If you’re running a blog, this module is a must-have.
- Structure — Managing a “static” website with EE has always been possible, but this module, which allows you to replicate a hierarchical site structure, makes it incredibly easy. You can reorder and reorganize your site structure, and the module even includes tags for generating dynamic menus and breadcrumb trails.
- Tag — Solspace’s “Tag” module allows you quickly assign tags to your weblog entries via an AJAX-ified interface. With this module, you can create tag clouds and lists of related entries. You can also “harvest” existing weblog data to auto-populate your tags and use the module to merge and manage existing tags. (Note: This is not a free add-on.)
Extensions allow you to modify the functionality within the control panel, EE’s admin area. This can include adding additional custom weblog field types, modifying the layout of the control panel, or simply enhancing pre-existing functionality.
- Category Checkboxes: Be default, EE lets you assign categories to weblog entries via a multi-select box. It works, but it isn’t the most intuitive or user-friendly method (for example, to select multiple categories, you need to hold down the “Control” key as you click on categories). This extension changes the multi-select box into a list of checkboxes, one for each category, which is a lot easier to use.
- FieldFrame — Brandon Kelly’s extension is actually a framework for developing new custom fieldtypes, such as checkbox groups, radio button groups, data matrixes, and file upload fields. For a better example, check out this showcase, which shows off the many fieldtypes that currently exist for the framework.
- LG Add Sitename — This extension simply displays your site’s name in the control panel. Which doesn’t sound like a big deal, but that extra bit of personalization is a nice touch.
- LG Better Meta — It’s possible to create and manage your entries’ meta tags using EE’s built-in capabilities, but this extension allows for much more power and control. You can a specify a wide range of meta content on a per weblog basis, including keywords, as well as robots and sitemag generation. (Note: This is not a free add-on.)
- LG Image Preview — If you’ve got entries that have primary images associated with them — for example, music reviews that contain album covers in a custom field — this will display thumbnails of those images in the “Edit” screen. Not essential, but it does make it easier to sort through all of your content.
- LG Live Look — I only recently discovered and started using this extension, but it adds some really cool — and much-needed — functionality. If you’ve used EE at all, then you’ll know that its “Preview” functionality isn’t all that it’s cracked up to be. The “Live Look” extension, however, implements true previewing functionality, letting you preview your entries from within the control panel before you publish them.
- nGen File Field — For a long time, I used Mark Huot’s venerable File extension, which allows you to add a simple file upload field to your publish/edit form. However, I’ve recently become enamored with this offering from nGen, which works with the aforementioned FieldFrame network. My favorite feature? The ability to choose between uploading a brand new image or reusing one that’s already been uploaded to your site. It’s a small thing, but it makes your site all the more user-friendly.
- Playa — One of EE’s most powerful features is the ability to create relationships between weblog and photo gallery entries. However, EE only lets you create one-to-one relationships. However, Playa — a FieldFrame fieldtype — lets you set up one-to-many relationships. Which is one of those things you never knew you needed until you actually have it. (Note: This is not a free add-on.)
- Sarge — I’m a bit of a Brandon Kelly fanboy, but that’s only because he develops awesome add-ons. Sarge lets you customize EE’s built-in “Drop-down List” field type with optgroups and custom values for your menu options. Again, one of those abilities that, once you have it, you can’t understand how you did without it.
Plugins are small add-ons that you implement in your templates. Typically small in scope, plugins serve a specific purpose, such as displaying random quotes, manipulating the data output by your template tags, and pulling in content from external, third-party sources.
- Extract URL — Pass this plugin a string of text, and it will return the URL, if any, contained therein. Which can come in really handy if your client input the HTML for a link or image incorrectly.
- Find and Replace — This plugin simply replicates PHP’s str_replace() and preg_replace() functions. Which means it comes in very handy when you want to do a simple search and replace on some output.
- HTML Strip: This does just what it says: it removes any all HTML from the text passed to it. You can, however, tell it to spare certain tags and how to handle the < and > characters in your HTML.
- Image Sizer — This plugin will take an image URL and resize it, which makes it a no-brainer if you need to create dynamic thumbnails. The plugin automatically generates the necessary HTML to display the resized image(s) and also caches the resized image(s) for later use.
- List Maker — Pass this plugin some lines of text separated by linebreaks, and it will convert them into an ordered or unordered HTML list.
More excellent ExpressionEngine add-ons can be found on Devot-ee.