Tag: wordpress


Rethinking Content Management

Posted By Ryan Stout on July 22, 2010

There's no denying it, WordPress (and other CMS's) are very popular for web development. For a lot of people who just need to get their content online and have it look good, its a very good solution. I find it interesting that there aren't any well developed CMS's for ruby yet. I speculate part of the reason for this is that Rails developers tend to have a different idea of code reuse.

Something like WordPress gives you 90% of what you might need, but then when you need to give it that extra 10%, you have to figure out how the inner details of WordPress and build your extra functionality into that system.

Rails, while in a different space than something like WordPress, handles a similar problem very differently. WordPress's tries to give you everything you might need tied together into one large system, so you don't often have to write your own code. Rails tries to give you a basic framework so all of your code can be componetized and reused between projects. This is especially obvious with rails plugins (and now engines).

My problem with the WordPress system is that when you need to jump out of the box, you have to figure out the whole system. The limitation I see with Rails at the moment is that there just isn't any good componetized CMS's that do things "the rails way".

Let me back up so you can see what I mean.

Problems WordPress Solves

  • Standardized Login System (for admin and commenting)
  • Standard Navigation System
  • Theme for all pages (stylesheets and images)
  • A way to manage blog articles/comments
  • A way to create pages and manage them

Rails Solutions to the Same Problems

Standard Login System

Rails has a few of these, the frontrunners are devise and authlogic. What's great is both of these comply to an API of sorts where #current_user returns a user object. While the before filter to require login is not the same name, it is easy to make an alias so both of these libraries behave in the same way.

Standard Navigation System

Rails also has at least one good plugin for this. Its a fairly simple task, so I won't focus on it too much.

Theme for all pages

Right now there really isn't anything that handles themes in Rails (and I'm not the first one to notice). I think a big selling point of WordPress is that you can push a button and your whole site changes to a totally new look. A lot of this can be handled with CSS directly. WordPress also has a navigation system built in so that tabs for example can be rendered differently or in different spots. I don't think something like this would be too difficult to pull off for Rails. I'm just not sure anyone has tried yet.

My plan is to tackle this issue at some point. Ideally, you would be able to place all theme components in its own directory, and those assets and code would be loaded based on the active theme. If we standardized some CSS classes we could keep the other components interchangeable and still get a blog page that does things like wrapping blog articles with a box.

A Way to Manage Blog Articles

I've talked before about how I didn't think this problem had been solved, so I went and tried to solved it. While blog_kit is still early, it makes it so you can add a blog section to any site. It ties into the existing sites theme, navigation, and login system. In my mind, if I added some standard CSS tags to blog_kit, it could tie into a theme and navigation system to provide very similar functionality to WordPress, but without the tight coupling.

A Way to Create Pages and Manage Them

This is the other big part of WordPress, and something I haven't tackled yet. I expect the solution will be very similar to BlogKit, only more geared towards editable CMS pages and editable paragraphs embedded in other places on dynamic pages.

My Long Term Goal

My long term goal is to build out modules that solve some of the problems WordPress solves, but in a Rails and modular way. I plan to keep it modular, when its done it would look like:

  • Login System: devise or authlogic
  • Navigation System: navigation_helper
  • Theme System: theme_kit (something I'll be building)
  • Blog System: blog_kit (already built)
  • CMS System: cms_kit (something else I'll be building)

While its a fairly ambitious project, I have some parts already done, and others have done some of the hard work (like the login system).


Tags: wordpress, blog, cms