topshelfcraft / supersort
...为您的Craft模板提供超强大的排序功能。
Requires
- craftcms/cms: ^5.0
- topshelfcraft/base: ^4.0.1
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。
贡献者
- 插件开发: Michael Rog / @michaelrog
- Craft 3端口: TJ Draper / @tjdraperpro
- 图标: Ralf Schmitzer,通过 The Noun Project