QZ qz thoughts
a blog from Eli the Bearded

Improved Tags Plugin


First major revision to the aaa_tags plugin. Several new features with this.

  1. AND search for multiple tags. Use ^ to separate tags.
  2. OR search for multiple tags. Use | to separate tags.
  3. NOT search for excluding tags. Prefix with ~ to exclude.
  4. All of those can be (crudely) combined for a complex search. Use , to combine them.
  5. Multiple uses of tag= CGI parameter allowed, if individual words, they will be considered an OR list.
  6. UTF-8 tags are now allowed.
    Tags can be ASCII letters, numbers, hyphen and underscore, plus any Unicode codepoints above U+00A0 (A0 is non-breaking space; that is not allowed in tags).
  7. If there are stories before filter() but the tag search has removed them all by the end of filter(), then story() will (attempt to) display an error page. Due to the way date filtering works in blosxom, story() may not get the chance. But it works for date unfiltered stuff.
  8. New template for that error: aaa_nothing_left
  9. New interpolatable variables.
    • Configuration parameters $aaa_tags::top_count and $aaa_tags::threshold
    • $aaa_tags::frequent_tags has a list of tags, much like the old $aaa_tags::top_tags, but alpha-sorted and a list of all tags with more than $aaa_tags::threshold uses.
    • $aaa_tags::this_search_terse has a value suitable for stuffing into a tag= CGI parameter for repeating the current search. Can be used anywhere.
    • $aaa_tags::this_search_verbose has a text description of the search, only for use in the error template.
    • $aaa_tags::this_search_table has a table of usage frequencies of the tags in the current search, only for use in the error template.

This is a lot of new code. There are probably bugs lurking in all of this. I've only done cursory testing, but I've been very happy with the results.

Reviews from 2020
/qz/blosxom?tag=review^2020
2003, 2004, 2005, 2006, 2007, and 2008 posts without "deadlink" tag (but see below)
/qz/blosxom?tag=2003|2004|2005|2006|2007|2008,~deadlink
Posts from 2020 not tagged with "blog"
/qz/blosxom?tag=2020,~blog
Blosxom or "administrivia" posts, as two tags
/qz/blosxom?tag=blosxom&tag=administrivia
UTF-8 tag, unique to this specific post.
/qz/blosxom?tag=utf-8✓
A search that will return no results.
/qz/blosxom?tag=blog,~blog

Testing this has made me realize (a) I've got a real problem with bad "deadlink" tagging, as in posts that should have that tag don't; and (b) the deadlink test was kinda flawed in that in only looked for 200 responses so sites that redirected http: to https: got mistakenly flagged. I need to fix both of those issues before the results of the example deadlink search reflect what really should be called deadlinks.