topshelfcraft/supersort

...为您的Craft模板提供超强大的排序功能。

安装次数: 75,356

依赖关系: 1

建议者: 0

安全: 0

星标: 40

关注者: 4

分支: 2

开放问题: 3

类型:craft-plugin

5.0.0 2024-07-28 19:10 UTC

This package is auto-updated.

Last update: 2024-08-28 19:23:58 UTC


README

...为您的Craft CMS模板提供超强大的排序功能。

Top Shelf Craft 创建
Michael Rog,所有者

SuperSort是什么?

SuperSort 插件提供了一个强大的Twig过滤器,可以帮助您对值数组进行排序——或者使用PHP内置的排序方法来排序实际值,或者使用自定义“排序为”方法根据将每个成员作为Twig对象模板处理后的渲染结果来排列数组。

使用 SuperSort 的“排序为”方法,您可以根据任何可访问的对象值对元素数组进行排序——包括来自矩阵块、相关元素的属性、数学计算等值。

用法

安装

访问您的Craft控制面板中的 插件商店,搜索 SuperSort,然后点击 安装 插件。

或者,如果您想尝试一下,可以通过 Composer 安装 SuperSort

composer require topshelfcraft/supersort

通用用法

使用 supersort 过滤器对对象数组进行排序。

(您可以将 supersort 应用于任何数组或 ElementQuery。非数组类型的来源将被转换为单个元素的数组...这可能对排序没有太大帮助。)

基本排序

过滤器的第一个参数指定了排序方法。

{% set sortedSource = source | supersort('asort') %}

您可以使用 PHP的内置排序方法 中的任何一种

如果您不提供这个第一个参数,将应用普通的 asort

{% set sortedSource = source | supersort %}

在许多常见情况下——例如,当您正在对名称、数字或文件名进行排序时——默认的 'asort' 算法可能会产生不希望的结果。在这些情况下,请考虑使用不区分大小写的自然排序算法('natcasesort')。

高级(“As”)排序

您还可以使用 SuperSort 的自定义方法之一进行排序

  • 'sortAs'
  • 'rsortAs'
  • 'natsortAs'
  • 'natcasesortAs'

要使用这些方法,您将提供一个第二个参数,该参数是用于使用数组中的每个对象 渲染 的Twig对象模板

{% set upcomingEvents = upcomingEvents | supersort('sortAs', '{eventDates.first.date}') %}

{% set upcomingEvents = upcomingEvents | supersort('sortAs', '{{ object.eventDates.first.date }}') %}

(这种“对象模板”语法与您可能用于定义Assets字段的 动态子文件夹路径 相同。)

排序标志

您可以提供第三个参数——PHP的 sort flags 之一。

{% set source = source | supersort('sortAs', '{foo}', SORT_NUMERIC) %}

{% set source = source | supersort('asort', null, SORT_NUMERIC) %}

如果您不提供这个第三个参数,将使用默认的(SORT_REGULAR)标志。

将SuperSort作为PHP助手使用

如果您想将 superSort() 方法作为其他Craft插件或组件中的助手使用,您可以直接从Sorter服务中访问它

$result = Sorter::superSort($array, $method, $as, $sortFlag, $comp);

(注意:PHP的内置排序方法 在原地对数组进行排序并返回表示成功与否的 boolean。相比之下,superSort() 方法返回的结果 array。)

支持

系统要求是什么?

Craft 4.0+ 和 PHP 8.0+

我发现了一个bug。

不...

我三番五次检查过。确实是一个bug。

好吧,行吧。请打开GitHub Issue,或者向4.x.dev分支提交PR。

贡献者