Mad, Beautiful Ideas
Movable Type Development

In my continued efforts to move my personal site and build my Consulting site in Movable Type, I found that the way that Movable Type handles Pages was problematic for me. Namely, I wanted to be able to have index pages for folders.

The system does not prevent me from placing a page with a basename of “index” in a specific folder, which provides the ‘illusion’ of folder indices, however, that solution left me with a problem. Name, the index page appeared as a subpage of the folder, not as the folder index.

I quickly discovered that Tags that I needed to rewrite the Pages Widget to support the behavior, I wanted didn’t exist, and so I began development on the Rich Folders Plugin for Movable Type 4. Currently, the plugin consists of only two more tags, one to determine if the current folder has an entry named “index”, the second to tell me if the current page has a basename of “index”. The next version of this plugin will support other basenames that might be encountered (such as “homepage”). I am debating the need to make this list be editable by users of the plugin.

While developing this plugin has got me part of the way to completing moving my personal site to MT, it has forced me to become far more familiar with the internals of Movable Type than I expected that I would need to for such a simple plugin. Looking back, I suppose my shock during the process wasn’t how much I needed to learn about Movable Type, but what felt like a general lacking in the developer documentation.

Never in the Developer Documentation does the author of that document go into important details, like how to load a list of entries, or what you can expect in the system Stash at different points in the execution cycle, or how to return errors to the user if your plugin is used incorrectly. These reasons are part of why I have not yet published my plugin, because I am still going through ensuring it is more robust and ready for general consumption. Plus, I think it could use some more functionality, much of which will likely become apparent the more work I get done.

It seems to me that Six Apart depends on a healthy developer’s ecosystem around the Movable Type publishing platform. Movable Type is an amazingly flexible system, in that the framework can be extended to do a number of different things from Blogs, the standard websites, to Forums. However, that flexibility is very hidden. The standard installation is highly blog-centric, and I’ve had to dig rather deep into this CMS in order to move a relatively simple website to it, which is unacceptable.

For instance, there does not appear to be any way to add static content to the root of the site without editing the index template. This deprives me (or any user) of the ability to use the rich text editor to maintain that data, instead hiding that particular page away in the Templates subsystem, and forcing me to edit that HTML directly. What is to be done? I’m expecting that the next part of Rich Folders will be a function that can grab the contents of the index in the blog’s root to display that to the users.

Ultimately, I’m likely to change the name of Rich Folders, as really my goal with this plugin is to expose functions that make Movable Type easier as a simple CMS. Movable Type is a great platform. I love that I can have a website which doesn’t need to destroy my hosting provider’s database in order to operate, but can still be maintained easily and from anywhere. If only the developer documentation were better, I’d likely already be done. I love Perl a a language, but I am forced to acknowledge that Perl code you didn’t write yourself is not unlike translating hieroglyphics without possessing a Rosetta Stone.