Questions answered by this recipe
How can I tag a page with multiple tags, for multiple category groups? How can I tag pages without having to type in link markup?
Tag a page with multiple tags in multiple category groups.
The tagger script uses a subset of page-text-variable markup to "tag" pages; that is, to link the page to the corresponding page (that matches the value of the tag) in another group. This is done by associating a "tag name" page-text-variable with a "tag-group" to be linked to.
For example, suppose you're gathering information about fiction, with a page for each story, and you want to collate authors and genres.
With Tagger, you can associate "Author" with the "Authors" group, and "Genre" with the "Genres" group.
$TaggerGroups['Author'] = 'Authors'; $TaggerGroups['Genre'] = 'Genres';
Then when you type
Author:Fred Nurk Genre:Historical
it will be interpreted as links, as if you had typed
Author:[[Authors/Fred Nurk]] Genre:[[Genres/Historical]]
But wait, there's more!
What if Fred Nurk's epic work wasn't just historical, but a historical romance? And rather than making a separate genre for historical romance, you wanted it to be counted as Historical and Romance both? Tagger allows you to do this, by defining certain characters (such as a comma) as "separators".
Author:Fred Nurk Genre:Historical, Romance
This will give links as if you had typed this:
Author:[[Authors/Fred Nurk]] Genre:[[Genres/Historical]], [[Genres/Romance]]
Likewise, if Fred Nurk co-authored his epic with Barbara Cartland, then you could do this (since '&' is also a separator character by default):
Author:Fred Nurk & Barbara Cartland Genre:Historical, Romance
giving links as if you had typed this:
Author:[[Authors/Fred Nurk]] & [[Authors/Barbara Cartland]] Genre:[[Genres/Historical]], [[Genres/Romance]]
Tagger accepts two forms of markup: the Tag:Value markup and the
The "Value" can contain multiple "values", separated by a separator. The default separators are comma ',', slash '/' and ampersand '&'. However, you cannot mix different separators in the same Value.
(:Tag:Value:) markup will be hidden as a hidden page-text-variable. Note, however, that Tagger will ignore hidden PTVs which span multiple lines; it must all be on one line.
For each Tagger "tag", there are a few Page Variables. These can be useful in pagelist templates.
|TagLinked||Contains links to all the tag-pages, with their labels being the title of the page linked to.|
|TagLinkedName||Contains links to all the tag-pages, with their labels being the name of the page linked to.|
|TagName||The tags munged together into one word, as if it was a page-name|
|$TaggerGroups||tag => group-name||empty|
|$TaggerTagSeparators||What characters can be used to separate tags.|
To activate this script, copy it into the cookbook/ directory, then add the following lines, for example, to your local/config.php:
$TaggerGroups['MyTag'] = 'MyTagGroup'; $TaggerGroups['MyOtherTag'] = 'MyOtherTagGroup'; include_once("$FarmD/cookbook/tagger.php");
IWFM (it works for me). It works with Cluster.
If the recipe has multiple releases, then release notes can be placed here. Note that it's often easier for people to work with "release dates" instead of "version numbers".
- (2008-01-27) Initial version
- (2011-07-29) Minor bug correction in output
- (2014-05-15) Use the Markup_e() function which is compatible with PHP 5.5 (Petko)
See Discussion at Tagger-Talk