%SEARCH{...}%
is a table consisting of topic names and topic summaries. Use the format="..."
parameter to customize the search result. The format parameter typically defines a bullet or a table row containing macros, such as %SEARCH{ "food" format="| $topic | $summary |" }%
. See %SEARCH{...}%
for other search parameters, such as separator=""
.header="..."
parameterheader="| *Topic:* | *Summary:* |"
Format tokens that can be used in the header string:Name: | Expands To: |
---|---|
$web | Name of the web |
$n or $n() | New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar |
$nop or $nop() | Is a "no operation". This token gets removed; useful for nested search |
$quot | Double quote (" ) (\" also works) |
$percnt | Percent sign (% ) |
$dollar | Dollar sign ($ ) |
$lt | Less than sign (< ) |
$gt | Greater than sign (> ) |
$amp | Ampersand (& ) |
footer="..."
parameterfooter="| *Topic* | *Summary* |"
Format tokens that can be used in the footer string:Name: | Expands To: |
---|---|
$web | Name of the web |
$ntopics | Number of topics found in current web |
$nhits | Number of hits if multiple="on" . Cumulative across all topics in current web. Identical to $ntopics unless multiple="on" |
$n or $n() | New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar |
$nop or $nop() | Is a "no operation". This token gets removed; useful for nested search |
$quot | Double quote (" ) (\" also works) |
$percnt | Percent sign (% ) |
$dollar | Dollar sign ($ ) |
$lt | Less than sign (< ) |
$gt | Greater than sign (> ) |
$amp | Ampersand (& ) |
format="..."
parameterformat="| $topic | $summary |"
Format tokens that can be used in the format string:Name: | Expands To: |
---|---|
$web | Name of the web |
$topic | Topic name |
$topic(20) | Topic name, "- " hyphenated each 20 characters |
$topic(30, -<br />) | Topic name, hyphenated each 30 characters with separator "-<br />" |
$topic(40, ...) | Topic name, shortended to 40 characters with "..." indication |
$parent | Name of parent topic; empty if not set |
$parent(20) | Name of parent topic, same hyphenation/shortening like $topic() |
$text | Formatted topic text. In case of a multiple="on" search, it is the line found for each search hit. |
$locked | LOCKED flag (if any) |
$date | Time stamp of last topic update, e.g. 05 Aug 2011 - 03:48 |
$isodate | Time stamp of last topic update, e.g. 2011-08-05T03:48Z |
$rev | Number of last topic revision, e.g. 4 |
$username | Login name of last topic update, e.g. jsmith |
$wikiname | Wiki user name of last topic update, e.g. JohnSmith |
$wikiusername | Wiki user name of last topic update, like Main.JohnSmith |
$createdate | Time stamp of topic revision 1 |
$createusername | Login name of topic revision 1, e.g. jsmith |
$createwikiname | Wiki user name of topic revision 1, e.g. JohnSmith |
$createwikiusername | Wiki user name of topic revision 1, e.g. Main.JohnSmith |
$summary | Topic summary, just the plain text, all formatting and line breaks removed; up to 162 characters |
$summary(50) | Topic summary, up to 50 characters shown |
$summary(showvarnames) | Topic summary, with %SOMEMACRO{...}% macros shown as SOMEMACRO{...} |
$summary(noheader) | Topic summary, with leading ---+ headers removedNote: The tokens can be combined, for example $summary(100, showvarnames, noheader) |
$changes | Summary of changes between latest rev and previous rev |
$changes(n) | Summary of changes between latest rev and rev n |
$formname | The name of the form attached to the topic; empty if none |
$formfield(name) | The field value of a form field; for example, $formfield(TopicClassification) would get expanded to PublicFAQ . This applies only to topics that have a DataForm |
$formfield(name, 10) | Form field value, "- " hyphenated each 10 characters |
$formfield(name, 20, -<br />) | Form field value, hyphenated each 20 characters with separator "-<br />" |
$formfield(name, 30, ...) | Form field value, shortended to 30 characters with "..." indication |
$pattern(reg-exp) | A regular expression pattern to extract some text from a topic (does not search meta data; use $formfield instead). In case of a multiple="on" search, the pattern is applied to the line found in each search hit.o Specify a RegularExpression that covers the whole text (topic or line), which typically starts with .* , and must end in .* o Put text you want to keep in parenthesis, like $pattern(.*?(from here.*?to here).*) o Example: $pattern(.*?\*.*?Email\:\s*([^\n\r]+).*) extracts the e-mail address from a bullet of format * Email: ... o This example has non-greedy .*? patterns to scan for the first occurance of the Email bullet; use greedy .* patterns to scan for the last occuranceo Limitation: Do not use .*) inside the pattern, e.g. $pattern(.*foo(.*)bar.*) does not work, but $pattern(.*foo(.*?)bar.*) doeso Note: Make sure that the integrity of a web page is not compromised; for example, if you include an HTML table make sure to include everything including the table end tag |
$count(reg-exp) | Count of number of times a regular expression pattern appears in the text of a topic (does not search meta data). Follows guidelines for use and limitations outlined above under $pattern(reg-exp) . Example: $count(.*?(---[+][+][+][+]) .*) counts the number of <H4> headers in a page. |
$ntopics | Number of topics found in current web. This is the current topic count, not the total number of topics |
$nhits | Number of hits if multiple="on" . Cumulative across all topics in current web. Identical to $ntopics unless multiple="on" |
$n or $n() | New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar |
$nop or $nop() | Is a "no operation". This token gets removed; useful for nested search |
$quot | Double quote (" ) (\" also works) |
$percnt | Percent sign (% ) |
$dollar | Dollar sign ($ ) |
$lt | Less than sign (< ) |
$gt | Greater than sign (> ) |
$amp | Ampersand (& ) |
%SEARCH{ "VarREMOTE" scope="topic" nosearch="on" nototal="on" header="| *Topic* | *Summary* |" format="| [[$topic]] | $summary |" footer="| *Topics found* | *$ntopics* |" }%
To get this:Topic | Summary |
---|---|
VarREMOTEADDR | #VarREMOTEADDR REMOTE ADDR environment variable Syntax: % nop REMOTE ADDR% Expands to: Related: ENV, HTTP HOST, REMOTE PORT, REMOTE USER |
VarREMOTEPORT | #VarREMOTEPORT REMOTE PORT environment variable Syntax: % nop REMOTE PORT% Expands to: Related: ENV, HTTP HOST, REMOTE ADDR, REMOTE USER |
VarREMOTEUSER | #VarREMOTEUSER REMOTE USER environment variable Syntax: % nop REMOTE USER% Expands to: Related: ENV, HTTP HOST, REMOTE ADDR, REMOTE PORT, USERNAME ... |
Topics found | 3 |
TopicClassification
field, an OperatingSystem
field and an OsVersion
field we could write:| *Topic:* | *OperatingSystem:* | *OsVersion:* |
%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" type="regex" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%
To get this:Topic: | OperatingSystem: | OsVersion: |
---|---|---|
IncorrectDllVersionW32PTH10DLL | OsWin | 95/98 |
WinDoze95Crash | OsWin | 95 |
%SEARCH{ "\*Back to:\* FrequentlyAskedQuestions" scope="text" type="regex" nosearch="on" nototal="on" header="FAQs:" format=" * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" footer="Found $ntopics FAQ topics" }%
To get this:FAQs:%SEARCH{ "culture" format=" * $topic is referenced by: (list all references)" nosearch="on" nototal="on" }%
%SEARCH{ "(topic found in first search)" format="$topic" nosearch="on" nototal="on" separator="," }%
$percnt
to escape the leading percent of the second search\"
to escape the double quotes$dollar
to escape the $
of $topic
$nop
to escape the }%
sequence%SEARCH{ "culture" format=" * $topic is referenced by:$n * $percntSEARCH{ \"$topic\" format=\"$dollartopic\" nosearch=\"on\" nototal=\"on\" separator=\", \" }$nop%" nosearch="on" nototal="on" }%
To get this:$dollarpercntSEARCH{
for level three, $dollardollarpercntSEARCH{
for level four, etc.%SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on" format="| [[$topic]] | $wikiusername | $date |" limit="7" }%
To get this:BlackListPlugin | OllyStephens | 20 Jan 2010 - 12:41 |
WebBottomBar | OllyStephens | 15 Aug 2009 - 15:03 |
FoswikiSiteSkinNavigationTemplate | OllyStephens | 14 Aug 2009 - 12:53 |
YouAreHere | ProjectContributor | 09 Jan 2009 - 12:00 |
WikiWord | ProjectContributor | 09 Jan 2009 - 12:00 |
WikiWikiClones | ProjectContributor | 09 Jan 2009 - 12:00 |
WikiSyntaxSummary | ProjectContributor | 09 Jan 2009 - 12:00 |
%CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}%
%SEARCH{ "." scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on" format="$percntCALC{$IF($TIME($date) < $GET(weekold), <nop>, | [[$topic]] | $wikiusername | $date | $rev |)}$percnt" limit="100" }%
weekold
variable to the serialized date of exactly one week ago$percnt
makes sure that the CALC gets executed once for each search hitweekold
date<nop>
is returned, which gets removed at the end of the rendering process%URLPARAM{"..."}%
macro. Example:Write this:Result: %SEARCH{ search="%URLPARAM{"q" encode="quote"}%" type="keyword" format=" * $web.$topic: %BR% $summary" nosearch="on" }%To get this:Result: