CGI %SEARCH{...}% is a table consisting of topic names and topic summaries. Use the CGI format="..." parameter to customize the search result. The format parameter typically defines a bullet or a table row containing variables, such as CGI %SEARCH{ "food" format="| $topic | $summary |" }%. See CGI %SEARCH{...}% for other search parameters, such as CGI separator="".
CGI header="..." parameter CGI header="| *Topic:* | *Summary:* |"
Variables that can be used in the header string:
| Name: | Expands To: |
|---|---|
CGI $web |
Name of the web |
CGI $n or CGI $n() |
New line. Use CGI $n() if followed by alphanumeric character, e.g. write CGI Foo$n()Bar instead of CGI Foo$nBar |
CGI $nop or CGI $nop() |
Is a "no operation". This variable gets removed; useful for nested search |
CGI $quot |
Double quote (CGI ") (\" also works) |
CGI $percnt |
Percent sign (CGI %) |
CGI $dollar |
Dollar sign (CGI $) |
CGI format="..." parameter CGI format="| $topic | $summary |"
Variables that can be used in the format string:
| Name: | Expands To: |
|---|---|
CGI $web |
Name of the web |
CGI $topic |
Topic name |
CGI $topic(20) |
Topic name, "- " hyphenated each 20 characters |
CGI $topic(30, -<br />) |
Topic name, hyphenated each 30 characters with separator "-<br />" |
CGI $topic(40, ...) |
Topic name, shortended to 40 characters with "..." indication |
CGI $parent |
Name of parent topic; empty if not set |
CGI $parent(20) |
Name of parent topic, same hyphenation/shortening like CGI $topic() |
CGI $text |
Formatted topic text. In case of a CGI multiple="on" search, it is the line found for each search hit. |
CGI $locked |
LOCKED flag (if any) |
CGI $date |
Time stamp of last topic update, e.g. CGI 12 Oct 2008 - 14:46 |
CGI $isodate |
Time stamp of last topic update, e.g. CGI 2008-10-12T14:46Z |
CGI $rev |
Number of last topic revision, e.g. CGI 4 |
CGI $username |
Login name of last topic update, e.g. CGI jsmith |
CGI $wikiname |
Wiki user name of last topic update, e.g. CGI JohnSmith |
CGI $wikiusername |
Wiki user name of last topic update, like CGI Main.JohnSmith |
CGI $createdate |
Time stamp of topic revision 1 |
CGI $createusername |
Login name of topic revision 1, e.g. CGI jsmith |
CGI $createwikiname |
Wiki user name of topic revision 1, e.g. CGI JohnSmith |
CGI $createwikiusername |
Wiki user name of topic revision 1, e.g. CGI Main.JohnSmith |
CGI $summary |
Topic summary, just the plain text, all formatting and line breaks removed; up to 162 characters |
CGI $summary(50) |
Topic summary, up to 50 characters shown |
CGI $summary(showvarnames) |
Topic summary, with CGI %ALLTWIKI{...}% variables shown as CGI ALLTWIKI{...} |
CGI $summary(noheader) |
Topic summary, with leading CGI ---+ headers removedNote: The tokens can be combined, for example CGI $summary(100, showvarnames, noheader) |
CGI $changes |
Summary of changes between latest rev and previous rev |
CGI $changes(n) |
Summary of changes between latest rev and rev n |
CGI $formname |
The name of the form attached to the topic; empty if none |
CGI $formfield(name) |
The field value of a form field; for example, CGI $formfield(TopicClassification) would get expanded to CGI PublicFAQ? . This applies only to topics that have a TWikiForm |
CGI $formfield(name, 10) |
Form field value, "- " hyphenated each 10 characters |
CGI $formfield(name, 20, -<br />) |
Form field value, hyphenated each 20 characters with separator "-<br />" |
CGI $formfield(name, 30, ...) |
Form field value, shortended to 30 characters with "..." indication |
CGI $pattern(reg-exp) |
A regular expression pattern to extract some text from a topic (does not search meta data; use CGI $formfield instead). In case of a CGI multiple="on" search, the pattern is applied to the line found in each search hit.• Specify a RegularExpression that covers the whole text (topic or line), which typically starts with CGI .*, and must end in CGI .* • Put text you want to keep in parenthesis, like CGI $pattern(.*?(from here.*?to here).*) • Example: CGI $pattern(.*?\*.*?Email\:\s*([^\n\r]+).*) extracts the e-mail address from a bullet of format CGI * Email: ... • This example has non-greedy CGI .*? patterns to scan for the first occurance of the Email bullet; use greedy CGI .* patterns to scan for the last occurance • Limitation: Do not use CGI .*) inside the pattern, e.g. CGI $pattern(.*foo(.*)bar.*) does not work, but CGI $pattern(.*foo(.*?)bar.*) does • 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 |
CGI $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 CGI $pattern(reg-exp). Example: CGI $count(.*?(---[+][+][+][+]) .*) counts the number of <H4> headers in a page. |
CGI $n or CGI $n() |
New line. Use CGI $n() if followed by alphanumeric character, e.g. write CGI Foo$n()Bar instead of CGI Foo$nBar |
CGI $nop or CGI $nop() |
Is a "no operation". This variable gets removed; useful for nested search |
CGI $quot |
Double quote (CGI ") (\" also works) |
CGI $percnt |
Percent sign (CGI %) |
CGI $dollar |
Dollar sign (CGI $) |
CGI %SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%
To get this:
CGI TopicClassification field, an CGI OperatingSystem field and an CGI OsVersion field we could write:
CGI | *Topic:* | *OperatingSystem:* | *OsVersion:* | CGI %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 |
CGI %SEARCH{ "__Back to\:__ TWikiFAQ" scope="text" type="regex" nosearch="on" nototal="on" header="TWiki FAQs:" format=" * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" }%
To get this:
TWiki FAQs: CGI %SEARCH{ "culture" format=" * $topic is referenced by: (list all references)" nosearch="on" nototal="on" }%
CGI %SEARCH{ "(topic found in first search)" format="$topic" nosearch="on" nototal="on" separator=", " }%
CGI $percnt to escape the leading percent of the second search
CGI \" to escape the double quotes
CGI $dollar to escape the CGI $ of CGI $topic
CGI $nop to escape the CGI }% sequence
CGI %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:
CGI $dollarpercntSEARCH{ for level three, CGI $dollardollarpercntSEARCH{ for level four, etc.
CGI %SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on" format="| [[$topic]] | $wikiusername | $date |" limit="7" }%
To get this:
| TWikiRegistration | Main.brodbd | 06 Oct 2008 - 17:04 |
| WysiwygPlugin | TWikiContributor | 10 Aug 2008 - 15:02 |
| WysiwygPluginSettings | TWikiContributor | 22 Jan 2008 - 03:21 |
| TWikiHistory | TWikiContributor | 15 Jan 2008 - 18:57 |
| WikiReferences | TWikiContributor | 12 Aug 2007 - 08:07 |
| WikiWord | TWikiContributor | 18 Jul 2007 - 04:58 |
| TWikiReleaseNotes04x02 | TWikiContributor | 27 Apr 2007 - 19:03 |
CGI %CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}% CGI %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" }%
CGI weekold variable to the serialized date of exactly one week ago
CGI $percnt makes sure that the CALC gets executed once for each search hit
CGI weekold date
CGI <nop> is returned, which gets removed at the end of the TWiki rendering process
| TWikiRegistration | Main.brodbd | 06 Oct 2008 - 17:04 | 15 |
CGI %URLPARAM{"..."}% variable. Example:
Write this:
<form action="%SCRIPTURLPATH{"view"}%/%WEB%/%TOPIC%">
Find Topics:
<input type="text" name="q" size="32" value="%URLPARAM{"q"}%" /> <input type="submit" class="twikiSubmit" value="Search" />
</form>
Result:
%SEARCH{ search="%URLPARAM{"q"}%" format=" * $web.$topic: %BR% $summary" nosearch="on" }%
To get this:
Result:
Related Topics: UserDocumentationCategory, SearchHelp, TWikiVariables#VarSEARCH, SearchPatternCookbook, RegularExpression
-- Contributors: TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie