该捆绑包为各种搜索引擎的全文搜索提供了统一的界面,并提供了带有树枝模板的控制器来呈现搜索表单和结果。
注意:您正在查看此捆绑包的版本 2,与版本 1 相比,它发生了很大的变化。
此搜索捆绑包简化了向您的网站添加搜索的过程。
为您提供的是:
目前,Google 站点搜索是开箱即用的。有一种使用 Google REST API 的实现,还有一种使用自定义搜索元素功能的实现,该功能仅在前端使用 javascript 加载搜索。
欢迎为其他服务做出贡献。
使用composer require liip/search-bundle
安装捆绑包。
将捆绑包包含在 app/Kernel.php 中。
在 app/config/config.yml 中添加您首选的搜索引擎:
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
或者如果您使用 javascript Google 自定义搜索引擎:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
您可以使用 liip_search_box twig 函数在页面上的任何位置显示搜索框:
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
您可以使用以下参数自定义搜索框:
<form>
的 css 类。创建搜索操作的路线。最简单的方法是使用主项目routing.xml 中提供的routing.xml:
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
它默认为 URL /search
。如果您想要不同的路由,请在包含路由时使用prefix
选项,或使用%liip_search.controller.search_action%
作为_controller
的默认值配置您自己的路由。
该捆绑包提供的搜索结果模板扩展了LiipSearchBundle::layout.html.twig
模板。要与网站的其余部分集成,您有两种选择:
app/Resources/LiipSearchBundle/views/layout.html.twig
并使其扩展您的基本布局,将liip_search_content
块放置在您想要搜索结果的位置。app/Resources/LiipSearchBundle/views/Search/search.html.twig
并构建您自己的模板结构 - 您应该能够use
search_results.twig.html
模板来获取liip_search_content
块。当然,您也可以覆盖任何模板来自定义它们应该执行的操作。请参阅http://symfony.com/doc/master/book/templated.html#overriding-bundle-templates
这是您可以在liip_search
键下配置的完整参考:
search_factory
字符串,默认值:null
指定实现LiipSearchBundleSearchFactoryInterface
的自定义服务。控制器将使用此服务来创建Pagerfanta
实例来处理搜索。
如果您配置其中一项搜索引擎服务,则无需设置此字段。
search_route
字符串,默认值:liip_search
将处理提交的搜索请求的路由的名称。
restrict_language
布尔值,默认值: false
如果您想要要求搜索服务将结果限制为请求的语言,请将此项更改为 true。
配置这些选项中的任何一个都会启用 Google 搜索引擎服务。它们位于clients.google_rest
下。
api_key
字符串,必填
您的 Google API 密钥
search_key
字符串|数组,必需
识别您的 Google 搜索引擎的密钥。可能是按区域设置索引的键列表,以针对每个区域设置使用不同的引擎。如果您通过单独的搜索引擎控制区域设置,则无需将restrict_language
设置为true,除非您希望自定义搜索引擎另外接收语言限制。
api_url
string ,默认值:https://www.googleapis.com/customsearch/v1
用于 REST 调用的 Google 搜索 API 网址
restrict_to_site
字符串,默认值:null
如果留空,则会搜索为 google 搜索引擎配置的所有站点。设置为 aa 域以限制到该域。
配置此部分会激活一个不同的控制器,该控制器呈现 Javascript 片段以启用 CSE 搜索。此配置位于clients.google_cse
下。
cse_id
字符串|数组,必需
识别您的 Google 自定义搜索引擎的密钥。可能是按区域设置索引的键列表,以针对每个区域设置使用不同的引擎。 CSE不支持restrict_language
,因此每种语言的不同搜索引擎是限制搜索结果语言的唯一选择。
如果您收到SearchException
“从 Google 搜索引擎 API 收到空响应”,请尝试将输出的 URL 复制到浏览器中。您应该收到 JSON 响应,但可能会出现错误状态。
如果您收到状态 500 且消息为空,则您可能需要在 Google 管理面板中续订搜索引擎。
实现LiipSearchBundleSearchInterface
并将其配置为服务。然后将liip_search.search_client
设置为该服务名称。