Published by Mijingo

movie icon image

ExpressionEngine How-to Articles

Topics range from beginner to advanced, but are all born out of real world, professional, day-to-day use of ExpressionEngine. Need more information? Get training videos and ebooks on ExpressionEngine from Mijingo.

What are EE Add-Ons?

If ExpressionEngine doesn’t do exactly what you need it to, don’t worry. The developers of EE have created a way to extend and customize ExpressionEngine using EE Add-ons. Add-ons are small pieces of software that you download and install and which allow you to add features to ExpressionEngine without any programming knowledge or altering the core application files.

Some EE Add-ons are available for free while others require a paid license. The Add-ons listed in the official ExpressionEngine Add-On Library are a mix of free and paid, but you can also find add-ons in the EE Forums and on various developers websites (see the end of the article for a list of links to visit). Three of the more popular add-on developers are Mark Huot (Please note that Mark has announced he will not upgrade any of his existing add-ons to support EE 2.0), Solspace and Leevi Graham.

If you browsed through the aforementioned and linked developer sites, you’ll notice that there are three different flavors of ExpressionEngine add-ons. Let’s run through those and look at what they do as well as some examples.


Extensions are the “smallest” type of EE add-on. Extensions use strategically-placed “hooks” in the ExpressionEngine application which allow developers to run code and customize a certain piece of functionality. Extensions do not require (or allow) the use of special template tags and do not output data to your templates. Generally, an extension will alter the Control Panel or inject code into a routine, like when a user logs in.

Installing Extensions is as easy as copying the file (ext.my_file.php) to your /system/extensions directory and then visiting the Extensions Manager in the EE Control Panel (under Utilites) to enable the installed extension.

ExpressionEngine Extensions Manager

The ExpressionEngine Extensions Manager in the Control Panel

Here are three examples of quality extensions:

  • First Timer - Allows you to redirect a user to a different page the first time they log in.
  • MH File - Enhances how you upload files while publishing new entries. If you use this extension, please note that the developer has no plans to upgrade it to work with EE 2.0.
  • LG Better Meta - Gives you finer control over the metadata for each and every entry in your EE website. This is an example of a commercial extension.

Take a look at each extension and what it does to get a better idea of the type of functionality EE Extensions offer.


Plugins differ from Extensions because plugins allow you to customize the data you display in your EE templates. Plugins have a set of EE tags and variables that you can use in your templates. Plugins do not hook into EE application routines the same way Extensions do.

Plugin installation is very simple. Add the plugin file (pi.my_file.php) to your /system/plugins directory and that’s it. Depending on the plugin, you may have to configure it, so be sure to follow the plugin author’s instructions. You can view all of your installed plugins using the Plugin Manager, which is located under the Utilities section of the ExpressionEngine Control Panel.

ExpressionEngine Plugin Manager

The ExpressionEngine Plugin Manager in the Control Panel.

Here are three examples of quality plugins:

  • Magpie - Allows you to parse RSS feeds and include the data in your templates. It uses the open source library of the same name.
  • Flickr Tools - Pull in your images from Flickr and display them on your EE-powered website.
  • YearList - Display a list of years where you have entries in the EE database.

All of the plugins listed above are free, so I encourage you to download each one and try it out.


Modules are more involved than the previous two types of add-ons that give ExpressionEngine a large amount of new functionality. Modules generally have both a Control Panel interface and tags and variables that allow you to display data in your templates.

ExpressionEngine modules consist of at least three different files:

  • mod.module_name.php contains the code that determines what type of data can be displayed in your EE templates.
  • mcp.module_name.php contains the code that handles installation and EE Control Panel functionality.
  • lang.module_name.php is a file that contains phrases and words used in the module.

Unlike plugins, EE Modules have to be installed before they are usable on your ExpressionEngine site. Installing requires you to copy the module files to the correct location (follow the instructions from the developer) and then using the Modules tab in the EE Control Panel, install the module.  If needed, this is where you can uninstall a module, too.

EE Module screen

The Modules tab in the ExpressionEngine control panel.

Here are three examples of well-done modules:

  • Freeform - Create as many different types of forms as you want. The form submissions are stored in the data and can also be emailed. One of the most popular EE modules.
  • Pages - This module ships with all licensed versions of ExpressionEngine and allows you to create one-off “static” pages.
  • Structure - Touted as a “new way to build ExpressionEngine sites,” this module allows you to build your site structure with deep nesting that does away with the template_group/template requirements.
Finding Add-ons

To find more add-ons, visit the following:

Posted on Jan 19, 2009

Filed Under: How-To, Getting Started with ExpressionEngine,

Ryan Irelan
About Ryan Irelan

Ryan Irelan is the Technology and Development Director at Happy Cog, a web design and development firm. He is a noted ExpressionEngine expert, having created a wildly popular video training series on ExpressionEngine. Additionally, Ryan is the publisher of EE Insider, a well-known news and information site for the ExpressionEngine community. In his spare time, Ryan is the production director of A List Apart Magazine, which is one of the most popular ExpressionEngine-powered sites on the web. Recently, Ryan published a book on ExpressionEngine 2 called "ExpressionEngine 2: A Quick-Start Guide."