blosxom is a blogging engine in a single tiny piece of perl; it's what this site uses. Well, it's small, fairly simple and not too ugly.

But, and that is something I'm quite unhappy about, is the lousy interface between Blosxom and its plugins - it's just not clean and well-defined, let alone documented.

Having said that, the plugin system is still pretty cool - never mind that 90% of the contributors should add use strict; to their repertoire of perl, and that the code is in most cases pretty bad to look at.

So, what might be shareworthy about my usage of Blosxom? I'd say the mix/mess/magic of plugins I use to achieve things. Let's see...

I don't run this site dynamically as the server is very slow; everything lives on my workstation, is mastered there and then transferred onto the server. Blosxom can do this ("static mode") but there are a few gotchas with such a setup, none show-stoppers though. Plugins (the public ones are listed here) that I use:

[/usr/local/share/blosxom] ls
01exclude     02strip_unix_comments      05breadcrumbs   07image
01flavourdir  04interpolate_conditional  05wikiwordish   99fixup
01update      05archives                 06categorytree  99sort_by_path_
02prefs       05azquotes                 06seemore

exclude allows to not look at certain directories/files. I've [patched)[/mystuff/exclude.patch] that to work on $blosxom::indexes.

flavourdir keeps flavour files in a separate flavour directory rather than alongside all of your blog entries.

update adds the content of X.upd, X.upd1 etc. as update to blog entries. This plugin was originally by Anthony Towns, but I've mostly rewritten it.

prefs allows to overwrite Blosxom's config variables on a per directory, per flavour basis; Earlier I used config but that doesn't work with static mode.

strip-unix-comments cuts lines that start with "#". Quite useful for private comments.

interpolate_conditional adds some variable interpolation mechanisms (beyond the usual $x expansion Blosxom does by default). It's quite limited, though, and I'm thinking about a rewrite. A patch is/was? required to fix escaping of the $.The sibling interpolate_fancy is even worse IMnsHO. I use that plugin to show the "RSS feed" link and the silly quotes heading only on the main page.

archives provides the material for the archive bar on the left; the only change I made was to shorten the month names.

azquotes is actually the fortune plugin in disguise; I tightened that one up a bit. All it does is run fortune and make the output available in a variable.

breadcrumbs produces the clickable trail through your categories that I use at the top of my blog entries. It works out of the box mostly; I patched it to add a css class for the breadcrumbs and to also produce content if we're home.

wikiwordish I use mostly to link to common outside locations (it replaces words in double brackets with links from a lookup table); its main functionality (linking to blog entries with a phrase in the title or filename) I avoid.

categorytree produces the material for the navigation bar on the left.

seemore translates ^L in an entry into cutting the entry short if we're displaying an index and replaces the remainder with a "see more" link to the full story. Works fine, but needed a patch to not touch the blog in RSS flavour and to work in static mode.

image is my gallery-like plugin. It takes paragraphs starting with "[image]" and listing image filepathes afterwards, creates thumbnails from the images if required, and replaces the paragraph with the thumbnail. Undocumented but works.

sort_by_path I use in the about/ section, where I want to have things sorted by filename, not date. The restriction to this area is enforced via the prefs plugin.

fixup is my replacement for static_file. It takes care of copying exactly the files referenced from within the blog pages into the published area (resolves symlinks, spiders html, css and anything linked from these that resides on the same box). Also complains loudly if a linked object isn't available. Very quirky but works fine.

I'm very much looking forward to Blosxom V3 which seems to have a vastly better plugin interface...

Update (Wed 20.04.2005 00:08):

One more hack I've implemented today: rssonlytop, a plugin that forces Blosxom to produce an RSS file only for the site's top level: I need no feeds for archives and sub-categories. Very ugly, as it involves frobbing Blosxom's not-really-exported %indexes variable and also bypassing the plugin enable/disable mechanism: there is none that works for filter() plugins because these are run before any flavours are set, and way before any of the config/prefs plugins run. The solution here is to depend on a variable that the Blosxom config file sets (or not). Works For Me as my RSS has a separate config file anyway.

[ published on Tue 19.04.2005 13:14 | filed in mystuff | ]
Debian Silver Server
© Alexander Zangerl