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