am-impact / amsearch
该包最新版本(2.0.7)没有可用的许可证信息。
Craft搜索插件
2.0.7
2016-05-03 07:56 UTC
Requires
- composer/installers: ~1.0
This package is not auto-updated.
Last update: 2024-09-12 00:54:42 UTC
README
在Craft中搜索
搜索
通常你可以在一次中搜索一个元素类型,但有时你希望搜索多个。例如,你想要根据提供的关键词显示条目和用户。你还想显示摘要,该摘要基于搜索关键词构建。
集合
这里你可以决定应该搜索哪种元素类型。
如果一个元素类型没有自己的URL(例如用户),你可以在集合设置中设置一个自定义URL格式。例如: users/{id}/{firstName}-{lastName}
搜索类型
有两种类型可供选择。
标准类型是最常用的类型。它使用Craft的搜索功能,但不使用记录和模型。这意味着与该元素类型相关的任何内容(关系)在搜索结果中都是不可用的。
当你看到模糊类型时可能有点困惑。在构建此插件时,原始想法是应该能够一次性获取所有可用的搜索结果,然后根据用户的输入进行筛选。基本上,这看起来像在 a&m command 中使用过的功能。为了使用此功能,你可以在插件资源文件夹中使用 fuzzy.min.js。
设置
示例:搜索结果模板
基于一个 标准 集合类型。当给集合参数一个数组时,你可以在多个集合中搜索。例如:collections: ['entries', 'users', 'assets']。
{% set keywords = craft.request.getParam('keywords') ?: false %}
{% set criteria = {
collections: ['entries'],
params: {
limit: 2,
keywords: keywords
}
} %}
{% amSearchPaginate criteria as searchResults %}
{# Search results #}
{% if not searchResults|length %}
<p>{{ 'There are no search results.' }}</p>
{% else %}
{% for searchResult in searchResults %}
<div>
<p>
{% if searchResult['title'] is defined %}<strong>{{ searchResult.title }}</strong><br>{% endif %}
{{ searchResult.excerpt }}
</p>
</div>
{% endfor %}
{# Pagination #}
<a href="{{ amSearchPaginate.firstUrl }}">First Page</a>
{% if amSearchPaginate.prevUrl %}<a href="{{ amSearchPaginate.prevUrl }}">Previous Page</a>{% endif %}
{% for page, url in amSearchPaginate.getPrevUrls(5) %}
<a href="{{ url }}">{{ page }}</a>
{% endfor %}
<span class="current">{{ amSearchPaginate.currentPage }}</span>
{% for page, url in amSearchPaginate.getNextUrls(5) %}
<a href="{{ url }}">{{ page }}</a>
{% endfor %}
{% if amSearchPaginate.nextUrl %}<a href="{{ amSearchPaginate.nextUrl }}">Next Page</a>{% endif %}
<a href="{{ amSearchPaginate.lastUrl }}">Last Page</a>
{% endif %}