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
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
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...
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
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.