-
Notifications
You must be signed in to change notification settings - Fork 0
87 Craft CMS之Search
Jinxin Chen edited this page Dec 11, 2019
·
1 revision
Craft CMS内建了Search功能,可以轻松的搜索资料
Craft CMS内建的Search,可以使用包含:简单搜索、逻辑搜索、栏位搜索、完全匹配搜索、区域过滤、通配符搜索功能
参考如下:
搜索语法 | 搜索结果 |
---|---|
salty | containing the word “salty”. |
body:salty | where the ‘body’ field contains “salty”. |
salty dog | containing both “salty” and “dog”. |
body:salty body:dog | where the ‘body’ field contains both “salty” and “dog”. |
salty OR dog | containing either “salty” or “dog” (or both). |
body:salty OR body:dog | where the ‘body’ field contains either “salty” or “dog”. |
salty -dog | containing “salty” but not “dog”. |
body:salty -body:dog | where the ‘body’ field contains “salty” but not “dog”. |
"salty dog" | containing the exact phrase “salty dog”. |
body:"salty dog" | where the ‘body’ field contains the exact phrase “salty dog”. |
salty locale:en_us | containing “salty” in the ‘en_us’ locale. |
sal* | containing a word that begins with “sal”. |
*ty | containing a word that ends with “ty”. |
alt | containing a word that contains “alt”. |
body:sal* | where the ‘body’ field contains a word that begins with “sal”. |
body::salty* | where the ‘body’ field begins with “salty”. |
body::"salty dog" | where the ‘body’ field is set to “salty dog” and nothing more. |
body:* | where the ‘body’ field contains any value. |
在teamplates目录下,建立search.html文件,简单的输入如下内容:
{% set query = craft.request.getParam('q') %}
{# Pass the search query directly into the search param: #}
{% set results = craft.entries({
search: query
}) %}
{% for result in results %}
<li><a href = "{{result.slug}}">{{result.title}}</a></li>
{% endfor %}
模板先获取参数q,然后将该参数传递给craft的search api搜索并返回结果,最后将结果列表出来。
访问页面如下页面即可对craft cms中的内容搜索,并呈现搜索结果
/search?q=
需要注意的一点是,如果搜索多个英文单词,默认是“且”的关系,就是搜索结果必须都包含全部的英文单词,这点和百度,Google不一样,如果要实现他们的效果,可以用“OR”关键字,比如
/search?q=apple OR egg
如果需要限定搜索的section,可以利用search api的section参数,比如:
{% set results = craft.entries({
section: 'blog',
search: query
}) %}
如果要搜索多个section,可以用“,”隔开:
{% set results = craft.entries({
section: 'blog,news',
search: query
}) %}
参考: