Faceted Movable Type
So as hundreds of my fans have been clamoring to know how I’ve constructed a faceted classification scheme and nav with Movabletype(MT), I’ll explain it here. Well they haven’t been so much clamoring as just sort of wondering aloud, and “fans” might be overstating it a bit — probably more like random visitors and, ok, it wasn’t hundreds it was just one person. Anyhoo…
Categories and MT
I made the decision to go with a faceted classification scheme for two reasons. The first reason is due to the limitations of category construction in MT. Each post can have any number of categories applied and one is selected to be the "primary" category. There's no way to make hierarchical relationships among them, though. There may be plug-ins now that make this possible, however, I'm unaware of them. I've also found it impossible to switch from the berkeley db to mysql which might allow further modifications in that direction.
The second reason I decided to go with a faceted classification scheme is that constructing a hierarchical scheme at the outset of what is really just a spot to keep my bookmarks and bibliographies seemed difficult. Difficult because I really wasn't sure what the scope of this site would be. However, I reviewed the content of the favorites I had squirreled away in IE5 and took a look at my attempts to use the folder system of the Mac OS to give order to many a paper in PDF format. (Pulling down my lengthy favorites list in my browser usually results in peals of laughter from anyone hanging over my shoulder. It's grown over the years and although I love classifying things -- the shoemaker's children...) So, it seemed the wise decision for a growing site since faceted classification can accomodate new knowledge in more flexible ways.
PMEST is the classifier's friend. It's an acronym used in faceted classification for the five fundamental facets. It stands for "personality, matter, energy, space, and time." Loosely, you can look at my attempt at describing the ascertainable qualities of what I believed would be in the scope of what I wanted to save and comment on as having the following equivalencies:
- (Space=I don't believe I've used this facet, or perhaps it's the permalink of the post itself? Yes, let's go with that for now.)
If you want to learn how to construct a faceted scheme properly try:
You'll notice that I've gone on quite a bit without mentioning MT. That should tip you off that, despite MT's discouraging me from creating an hierarchical scheme, creating a classification scheme should have little to do with the tool you've chosen and is primarily an intellectual exercise, not something that can be automated. Stuffing that scheme into any particular tool might be technologically challenging, but you should resist letting it have too much of an impact on your scheme if possible. (i.e. do as I say, not as I do)
MT and Regex
For each MT category that I created, I included the facet with its name such as Form: Web Site, Process: Designing, etc. I used Brad Chaote's regex plug-in to then display them. <mtifmatches> pulls out every category that, for example, starts with "form" for me and then displays those together. To avoid having "form" repeated over and over a regex pattern then strips the displayed linked text of its facet's name. The date navigation uses the built-in capability of MT. I've created a single file for each facet's display and then I use SSI on any given page where I wish to make it available.
Here's an example of what the code looks like to display the "process" facet:
<MTAddRegex name="patt3">s/Process: //gi</MTAddRegex> <MTCategories> <MTIfMatches var="CategoryLabel" pattern="m/(Process:)/i"> <a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryCount$> entries"><$MTCategoryLabel regex="patt3"$></a> | </MTIfMatches> </MTCategories>
This is additional evidence to back up my observation that most problems in life can be solved with the creative use of regular expressions.