I'm about to work on some basic SEO for my EE site. I'm trying to dynamically set the title, meta description, OpenGraph tags, and do XML Sitemaps. I've already started trying to dynamically set the title and meta description -- with a lot of if-conditions. It's starting to get ugly.

I've been looking at http://ee-garage.com/nsm-better-meta. Any comments about this addon? Are there other addons I should be looking at?

6 Answers 6


I like the Variables plugin for pushing meta data from my templates to my header.

The variables plugin gives the possibility to create variables (either static or dynamic) and use them later on. This means that for example you can set certain data and use it in the head (if it's embedded) without having to re-create a tag pair for the specific channel.

Inside your channel:entries loop (or wherever) you SET a variable like this:

{exp:channel:entries channel="products"}            
    {exp:variables:set name="title" value="{title}"}

In your header you "GET" the variable like this:

{exp:variables:get name='title'}

This lets you build exactly what you need for your project.

This won't help with site map. Unless a site is using the Structure Module, I think it's best to build the sitemap manually in a template to allow for ultimate control.


SEO Lite is always helpful. Dynamic but let's you do page level overrides. No site maps though. http://devot-ee.com/add-ons/seolite

Also adds a tab to the publish view so it's readily available.


I would recommend this approach with Stash: http://www.jamessmith.co.uk/articles/expressionengine-stash-tutorial-level-1#meta

I dislike add-ons that purport to "do" metadata for you, because unless your site is a very basic static page-based affair (where one entry always translates to one page) they can never cover all the possibilities for how metadata should get set, and it harms the future-proofing of your site.

I also like to keep the definition of a given pageview's metadata in the same place as the content to which it relates (as opposed to with the layout markup), so the template partials approach makes the most sense to me, as well as its myriad of other advantages.


James Smith's recommended approach could work for you unless you're just looking for something simpler e.g. similar to fields that can be used across channels.

A starting place for that is as Jeremy said, i.e. SEO Lite. However, it is very basic, it's limited to those specific inputs and entries alone.

SurgeEO($) ties SEO/meta data to urls as opposed to content, but it seems to have the same limitation as SEO Lite, i.e. hardcoded inputs so you can't really get variety of metadata out of it.

SEOverride($) is a similar concept with a different interface, except instead of individual hardcoded inputs you have a simple grid/matrix-like option, where the type of meta data and its values for a given URL are entirely up to you.

I haven't used any of these yet but I'm personally going with SEOverride as it allows me to add Facebook Open Graph tags and whatever else I want in the future with relative ease. Don't have to think about what fields to add to which channel, minimal effort for templating, content entry is channel/entry/category agnostic, so it can suit the organization's needs if they decide to change or add things on a whim.


I would recommend that you check SEO Lite.This is actually very basic basic and very helpful. I think I will also check what notacouch have shared here. I will definitely check SurgeEO and SEOverride.


I do use NSM better meta and it is quite ok also. Also if you don't input any entry based meta, the default one comes in hand,but also , creating keywords and content for every entry is important too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.