Elgg SEO: How to Fix Your Title Tags

Update #1: My changes have been rolled into the current development version of Elgg, so they should be in the next release. So if you don’t want to implement these changes yourself, you should be ok waiting for the upgrade.

Update #2: The title tag for pages and files did make it into Elgg 1.5, but the blog title tag change got regressed somehow. If it was not an accident, then they did it on purpose. Either way, it is very amateurish in my opinion, which continues to be one of my complaints about Elgg. Anyway, you can still apply the fix below exactly as described, and it will work.

I’ve been writing about recently, and more importantly, how to improve it. I have said that Elgg needs some attention to SEO to be a serious solution. Even though Elgg developers have taken my suggestions recently, I couldn’t wait any longer and took it upon myself to dig into the Elgg source code.

My goal was to improve Elgg SEO by creating unique title tags within the content. I was able to create unique title tags for blog posts, pages and files, by adding the post title to title tag in the header, so that each title tag is formatted like this, “Site Name : Title.”

Here’s how you can do the same thing step by step.

To give your blog posts a unique title tag, go to mod/blog/read.php and uncomment line 38. Here’s how it should read.

$title = sprintf(elgg_echo("blog:posttitle"),$page_owner->name,$blogpost->title);

Now your blog post title tags should read, “Site Name: username’s blog: Post title.”

Next up is pages. To give your pages a unique title tag, go to mod/pages/view.php and insert this code on line 40.

$title = $pages->title;

Now your page title tags should read, “Site Name: Page title.”

Changing the file title tags was a lot harder, because there is not really a file view. You have to change it in the entity view. Up to this point, we have been modifying plugins files, which is fine because we are not modifying the core Elgg files. This means those changes won’t get erased by upgrading your Elgg installation.

But modifying the entity view requires modifying core Elgg files, so proceed at your own risk. To make the change, open up entities\index.php. Insert this code on line 40.

$title = $entity->title;

Modify line 57 to look like this.

page_draw($title, $body);

Then on line 60 insert this code.

echo $title;

Now your file title tags should read, “Site Name: File title.”

These were small improvements, but hopefully it will pay off in more search engine traffic to your Elgg site. I’ve submitted these changes to the Elgg code base here, here and here. Hopefully, the developers will consider integrating these improvements into the actual code.

I’ve tested this code, and it works. But I am not a developer, so if I’ve made any mistakes, I welcome suggestions for improvement. If this would be better done as plugin, I would love to have someone come up with an Elgg SEO plugin, as well.

Elgg and SEO

Update: I’ve posted a solution for fixing your title tags in Elgg.

So as I’ve written, I’ve been using a social networking software package called Elgg. So far I’m really pleased with how it works. In addition, it is open source with the ability to develop plugins for it.

However, Elgg is not without its problems. In fact, I recently posted a development wishlist for Elgg. Besides releasing an upgrade path to upgrade your 0.x Elgg installation to 1.x (a glaring error), at the top of my list is lack of SEO.

In my opinion, Elgg seriously needs SEO to be considered a useful product. I’m really not asking all that much here. The main thing it needs is unique title tags. This is a basic SEO requirement, and continues to be overlooked in Elgg.

For example, any item you create in Elgg, blog post, page, file, etc., lacks a unique title tag. In fact, they all have the same title tag, which is only the site name. This is bad for SEO because when your items show up in a search engine, there will be no descriptive text for that item. In addition, if your page shows up with other pages from your site, there is no way to tell them apart because the title tags are all the same.

The interesting thing is that this feature was present in Elgg 0.x but not in the new version of Elgg 1.x. All you would have to do to give each item a unique title tag would be to have the name of the site followed by the title of the item, i.e. the blog post title. This would make items posted in Elgg much easier to find in search engines, and as a result, bring more search engine traffic to each site. It seems like a simple thing, and, being that this feature actually exists in the groups and forums, it doesn’t seem that hard to add to the rest of the site.

The second thing that would be useful is search engine friendly url’s for pages. Search engine friendly urls are being used for blog posts and files but not for pages. This was something that was not present in Elgg 0.x but was added in 1.x.

I recently wrote a post about how to make the Elgg plugin directory more useful, and the developers followed every one of my suggestions. So I am writing this hoping that someone over there is still paying attention. At the least, it would be simple to write a plugin to solve this problem, or incorporate it into themes.

For you Elgg users and developers out there, what are some other ways SEO can be improved in Elgg?