burnbright/silverstripe-pagesearch

搜索 SilverStripe 网站中的页面。

安装: 359

依赖者: 0

建议者: 0

安全: 0

星标: 8

关注者: 4

分支: 2

开放问题: 0

类型:silverstripe-module

dev-master 2016-02-21 00:33 UTC

This package is auto-updated.

Last update: 2024-08-24 19:44:45 UTC


README

这是一个简单的搜索替换,用于默认的 SilverStripe 搜索功能。

搜索将在所选 pagetype 的所有 Text、HTMLText、Varchar 和 HTMLVarchar 字段上执行。

可以通过 URL 变量特别设置 Pagetype,例如: ?pagetype=BlogEntry

限制

  • 目前仅与 MySQLDatabase 进行测试。
  • 不搜索关系。使用像 SOLR 这样的更好引擎。

使用方法

在您的 Page_Controller 类中

	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'));
	}

因为返回了一个 DataList,您可以用 PaginatedList 包装它以添加分页。