burnbright / silverstripe-pagesearch
Search pages accross a SilverStripe site.
Installs: 359
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 4
Forks: 2
Open Issues: 0
Type:silverstripe-module
Requires
- silverstripe/framework: ~3.1
This package is auto-updated.
Last update: 2024-10-24 20:02:40 UTC
README
A simple search replacement for the default SilverStripe search functionality.
Searches will be performed on all Text,HTMLText,Varchar, and HTMLVarchar fields for the selected pagetype.
Pagetype can be specifically set with url vairalble, eg: ?pagetype=BlogEntry
.
Limitations
- Currently only tested with MySQLDatabase.
- Does not search on relations. Use a better engine like SOLR for this.
Usage
In your Page_Controller
class:
public function SearchForm() { $searchText = ($this->request && $this->request->requestVar('Search')) ? $this->request->requestVar('Search') : 'Search'; $form = new Form( $this, 'SearchForm', new FieldList( TextField::create('Search', false) ->setAttribute("Placeholder", $searchText) ), new FieldList( FormAction::create('results', 'Go') ) ); $form->setFormMethod('GET'); $form->setTemplate('SearchForm'); return $form; } function results($data, $form, $request) { $search = PageSearch::create($request); $data = array( 'Content' => '', 'Results' => $search->results(), 'Query' => $search->getQuery(), 'Title' => _t('SearchForm.SearchResults', 'Search Results') ); return $this->owner->customise($data)->renderWith(array('Page_results', 'Page')); }
Because a DataList
is returned, you can wrap it in a PaginatedList
to add pagination.