am-impact/amsearch

该包最新版本(2.0.7)没有可用的许可证信息。

Craft搜索插件

安装: 44

依赖: 0

建议者: 0

安全: 0

星标: 24

关注者: 12

分支: 2

公开问题: 3

类型:craft-plugin

2.0.7 2016-05-03 07:56 UTC

This package is not auto-updated.

Last update: 2024-09-12 00:54:42 UTC


README

在Craft中搜索

搜索

通常你可以在一次中搜索一个元素类型,但有时你希望搜索多个。例如,你想要根据提供的关键词显示条目和用户。你还想显示摘要,该摘要基于搜索关键词构建。

集合

这里你可以决定应该搜索哪种元素类型。

如果一个元素类型没有自己的URL(例如用户),你可以在集合设置中设置一个自定义URL格式。例如: users/{id}/{firstName}-{lastName}

NewCollection

搜索类型

有两种类型可供选择。

标准类型是最常用的类型。它使用Craft的搜索功能,但不使用记录和模型。这意味着与该元素类型相关的任何内容(关系)在搜索结果中都是不可用的。

当你看到模糊类型时可能有点困惑。在构建此插件时,原始想法是应该能够一次性获取所有可用的搜索结果,然后根据用户的输入进行筛选。基本上,这看起来像在 a&m command 中使用过的功能。为了使用此功能,你可以在插件资源文件夹中使用 fuzzy.min.js

设置

Settings

示例:搜索结果模板

基于一个 标准 集合类型。当给集合参数一个数组时,你可以在多个集合中搜索。例如: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 %}