This page (revision-1) was last changed on 2019-12-18 09:13 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 1 added 173 lines
The __HasTagOfPlugin__ (or simply "HasTagOf" in use) provides a query on the list of pages having a given tag, tags expressed using the TagPlugin.
See also: TagPlugin, TagManager, TagCloudPlugin, [Burt Reynolds]
----
! Syntax
Creating a query for a single tag is pretty simple:
{{{
[{HasTagOf tagname }]
}}}
The tag can ''optionally'' be wrapped in square brackets (since tags are also required to be wiki pages).
There is an optional "{{output}}" parameter, see the next section.
! Simple Logic
You can query on more than one tag where __all__ are required by listing them with {{AND}} operators between:
{{{
[{HasTagOf tagname1 AND tagname2 }]
}}}
For example,
{{{
[{HasTagOf Actor AND Honcho }]
}}}
[{HasTagOf Actor AND Honcho }]
You can query on more than one tag where __any__ are required by listing them with {{OR}} operators between:
{{{
[{HasTagOf tagname1 OR tagname2 }]
}}}
For example,
{{{
[{HasTagOf Honcho OR Sidekick }]
}}}
[{HasTagOf Honcho OR Sidekick }]
You can query on pages that don't contain a tag using the {{NOT}} operator:
{{{
[{HasTagOf NOT tagname1 }]
}}}
For example (using the 'output' parameter, described below),
{{{
[{HasTagOf output='count' NOT Honcho }]
}}}
[{HasTagOf output='count' NOT Honcho }]
The {{AND}}, {{OR}}, and {{NOT}} logical operators can be combined (using parentheses as necessary) to create more complicated logical queries, e.g.,
{{{
[{HasTagOf (( tagname1 AND tagname2 ) OR ( tagname3 NOT tagname4 ) }]
}}}
! Regular Expression Matching
When a compile-time variable "permitRegex" is set true (the default), regular expression ("regex") matching is enabled.
To match on a regular expression, wrap the regex pattern in square brackets. For example, to match any tags beginning with "Per", the regular expression "{{Per.*}}" would be used:
{{{
[{HasTagOf [Per.*] }]
}}}
[{HasTagOf [Per.*] }]
Note that a match on any tag is "{{{[.*]}}}", not "{{{[*]}}}". This returns all tagged pages, not the list of all tags.
----
! Alternative Output Formats
The output without any 'output' parameter will be wrapped in an HTML {{<div class='hastag'>}} element that permits CSS styling. If an 'output' parameter is specified this {{<div>}} wrapper is not included in the generated output.
Options for the 'output' parameter value are: "none", "count", "list", "bullet", "number", "space", "comma", "colon" and "bar". The default (absent any parameter) is "list".
(NOTE: the below demonstrations will fail if the plugin is not installed.)
__None:__
{{{
[{HasTagOf output='none' Person }]
}}}
[{HasTagOf output='none' Person }]
__Count:__
{{{
[{HasTagOf output='count' Person }]
}}}
[{HasTagOf output='count' Person }]
__List:__
{{{
[{HasTagOf output='list' Person }]
}}}
[{HasTagOf output='list' Person }]
__Bullet:__
{{{
[{HasTagOf output='bullet' Person }]
}}}
[{HasTagOf output='bullet' Person }]
__Number:__
{{{
[{HasTagOf output='number' Person }]
}}}
[{HasTagOf output='number' Person }]
__Space:__
{{{
[{HasTagOf output='space' Person }]
}}}
[{HasTagOf output='space' Person }]
__Comma:__
{{{
[{HasTagOf output='comma' Person }]
}}}
[{HasTagOf output='comma' Person }]
__Colon:__
{{{
[{HasTagOf output='colon' Person }]
}}}
[{HasTagOf output='colon' Person }]
__Vertical Bar:__
{{{
[{HasTagOf output='bar' Person }]
}}}
[{HasTagOf output='bar' Person }]
! Case Testing
Not quite sure how to handle this since we need to match page names case insensitively but we don't want our tags to all be lowercased.
{{{
[{HasTagOf PERSON }]
}}}
[{HasTagOf output='comma' PERSON }]
{{{
[{HasTagOf person }]
}}}
[{HasTagOf output='comma' person }]
{{{
[{HasTagOf [P.*] }]
}}}
[{HasTagOf output='comma' [P.*] }]
The presence of regex characters will force this as a regex match but {{{[p.*]}}} will only match wiki pages beginning with lowercase 'p', not uppercase.
{{{
[{HasTagOf [p.*] }]
}}}
[{HasTagOf output='comma' [p.*] }]
Doing an explicit regex match using the 'regex' parameter:
{{{
[{HasTagOf regex='(A|P).*' }]
}}}
[{HasTagOf output='comma' regex='(A|P).*' }]
----
%%small
This is a page related to the TagManager.
%%
[{Tag WikiPlugin NeocortextPlugin}]