%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()Barinstead 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 $ntopicsunless multiple="on" |
$n or $n() | New line. Use $n()if followed by alphanumeric character, e.g. write Foo$n()Barinstead 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 ---+ headersremovedNote: 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 $formfieldinstead). 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 $ntopicsunless multiple="on" |
$n or $n() | New line. Use $n()if followed by alphanumeric character, e.g. write Foo$n()Barinstead 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 |
TopicClassificationfield, an OperatingSystemfield and an OsVersionfield 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="," }%$percntto escape the leading percent of the second search\"to escape the double quotes$dollarto escape the $of $topic$nopto 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" }%weekoldvariable to the serialized date of exactly one week ago$percntmakes sure that the CALC gets executed once for each search hitweekolddate<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:
Copyright © by the contributing authors. All material on this site is the property of the contributing authors.