SearchResults
Question
How can I change the way search results are displayed?
Answer
(:searchresults:) can be customized by editing page Site.Search.
For instance to limit the result to group Main you would change the
(:searchresults:) to (:searchresults group=Main:)
Question
How can I add a link to create a new page on the search results page when no matches were found?
Answer
Add this "hack" to the pagelist.php file in your /scripts directory.
Note that it is highly recommended NOT to modify files from the core distribution which will be replaced when you upgrade. --Petko October 08, 2013, at 09:59 PM
Replace this, on line 55:
XLSDV('en', array(
'SearchFor' => 'Results of search for <em>$Needle</em>:',
'SearchFound' =>
'$MatchCount pages found out of $MatchSearched pages searched.'));
With this:
if($MatchCount < 1) {
$xlsdvArgs = array(
'SearchFor' => 'Results of search for <em>$Needle</em>:',
'SearchFound' =>
'<p>No results found. Create a new page for
"<a href="index.php/Main/$Needle">$Needle</a>"</p>');
}
else {
$xlsdvArgs = array(
'SearchFor' => 'Results of search for <em>$Needle</em>:',
'SearchFound' =>
'$MatchCount pages found out of $MatchSearched pages searched.');
}
XLSDV('en', $xlsdvArgs);
Question
How can I exclude pages such as RecentChanges or GroupHeader from being displayed in search results and page lists?
Answer
The list=normal Parameter
PmWiki pre-defines a "list=normal" parameter to the (:searchresults:) and (:pagelist:) directives, adding this parameter excludes pages with names like RecentChanges or GroupHeader from appearing in the output. For example,
(:pagelist group=Cookbook list=normal:)
gives a list of all "normal" pages in the Cookbook (pages except for RecentChanges, GroupHeader, etc).
Defining Custom Parameters
PmWiki's default is to display all pages; but a wiki administrator can override this default by adding entries to $SearchPatterns.
For example, to define "list=calendar" to limit the results to pagenames in a yyyy-mm-dd format, an administrator can add the following to config.php, using forward-slash / delimiters (at the start and end of the string) to include pages:
$SearchPatterns['calendar'][] = '/\\.\\d{4}-\\d\\d-\\d\\d$/';
With this definition, the markup (:pagelist list=calendar:) would only display pages with names in a yyyy-mm-dd format.
For search exclusions, use patterns delimited by exclamation points. Thus an administrator can define "list=norc" to exclude any pagename ending in "RecentChanges":
$SearchPatterns['norc'][] = '!RecentChanges$!';
To change the default listings to exclude RecentChanges, AllRecentChanges, GroupHeader, and etc., use something like:
$SearchPatterns['default'][] = '!\\.(All)?Recent(Changes|Uploads)$!'; $SearchPatterns['default'][] = '!\\.Group(Print)?(Header|Footer|Attributes)$!';
Similarly, you can exclude groups.
$SearchPatterns['default'][] = '!^Site\\.!'; $SearchPatterns['default'][] = '!^PmWiki\\.!';
Question
How can i make the Search should use the Group it is called from to return the result
TTC/Search
Answer
It appears this can be achieved by the following steps
- insert
$PageSearchForm = '$DefaultGroup.Search';at the end of your config.php file - change
$SiteGroup/Searchto$DefaultGroup/Search(twice) in the $DefaultGroup pmwiki.tmpl (change$DefaultGroupto suit) - create the page
DefaultGroup.Search, use the$SiteGroup.Searchas a model
Alternatively try
(:searchbox size=24 group=TTC target=TTC.Search:)
(:if equal {$Action} "search":)
(:searchresults list=normal name=-template:)
(:ifend:)
See also
$SiteGroup$DefaultGroup$PageSearchForm- Page Lists directives (:searchresults:) and (:searchbox:)
- Search Targeting and customizing search results
Comments
If you're using PmWiki as a CMS, the following lines in your local/config.php will exclude wiki-related pages from searches without a list= parameter:
## Exclude Certain pages / groups from search results. $SearchPatterns['default'] = array( 'recent' => '!\.(All)?Recent(Changes|Uploads)$!', 'group' => '!\.Group(Print)?(Header|Footer|Attributes)$!', 'pmwiki' => '!^(Site|PmWiki)\\.!' );
Contributors
- Pm, 20-Oct-2004