flowpack / listable
用于列出事物的微小扩展
3.6.0
2023-10-09 17:13 UTC
Requires
- neos/neos: ^3.3 || ^4.0 || ^5.0 || ^7.0 || ^8.0 || dev-master
Replaces
- sfi/listable: v0.1
README
这个 Neos 包解决了一个问题:帮助您在 Fusion 中列出任何节点。想法非常简单:您通常需要显示事物的列表(例如新闻、文章等),而列出项的关注点应该与渲染项的关注点分开。此包提供了列出的坚实基础,同时允许您自行处理渲染内容。
TL;DR
- 使用 composer 安装包:
composer require flowpack/listable
在 Packagist 上查看。 - 如果需要分页列表,请使用
Flowpack.Listable:PaginatedCollection
。 - 如果只需要简单的列表,请使用
Flowpack.Listable:Collection
(或只需Neos.Fusion:Collection
!)。 - 如果需要带有标题和存档链接的列表,请将您的列表包裹在
Flowpack.Listable:List
中。 - 为您的每个 nodetype 创建一个类型为 NodeTypeName + '.Short' 的新 Fusion 对象,或者手动定义一个渲染对象。
- 在覆盖设置时依赖公共 API 密钥。
Fusion 对象
此处记录的键被认为是公共 API,并会考虑到语义版本化。在风险自负的情况下扩展所有其他属性。
Flowpack.Listable:Collection
此对象是围绕 Neos.Fusion:Collection
的简单便利包装,如果您想节省几个键位,请使用它。它使用提供的名称将列表包裹在 UL 和 LI 标签中,并将 Flowpack.Listable:ContentCaseShort
设置为默认的 itemRenderer。
配置选项
示例
prototype(My.Custom:Object) < prototype(Flowpack.Listable:Collection) {
collection = ${q(site).find('[instanceof Something.Custom:Here]').sort('date', 'DESC').slice(0, 6).get()}
listClass = 'MyList'
itemClass = 'MyList-item'
}
它将使用对象 Something.Custom:Here.Short
进行渲染。
请确保正确配置缓存。
Flowpack.Listable:PaginatedCollection
此对象允许您分页 ElasticSearch 结果、FlowQuery 结果对象或纯节点数组。
配置选项
当与 ElasticSearch 一起使用时,构建查询,但不要执行它,该对象会为您执行。
prototype(My.Custom:Object) < prototype(Flowpack.Listable:PaginatedCollection) {
collection = ${Search.query(site).nodeType('Something.Custom:Here').sortDesc('date')}
itemsPerPage = 12
prototype(Flowpack.Listable:Collection) {
listClass = 'MyPaginatedList'
itemClass = 'MyPaginatedList-item'
}
}
如果您有额外的 URL 参数(例如日期过滤器),您必须注册该参数并更改 cache entryDiscriminator 以相应地工作。提示:不要忘记为您的自定义参数注册相应的路由。
prototype(My.Custom:Object) < prototype(Flowpack.Listable:PaginatedCollection) {
...
prototype(Flowpack.Listable:PaginationParameters) {
date = ${request.arguments.data}
}
@cache {
entryDiscriminator = ${request.arguments.currentPage + request.arguments.date}
}
}
此对象默认配置为 dynamic
缓存模式以实现分页。您只需添加正确的 entryTags
即可。
Flowpack.Listable:List
通常需要渲染带有标题和存档链接的列表。此对象将您的列表包裹在适当的内容中。
配置选项
示例
prototype(My.Custom:Object) < prototype(Flowpack.Listable:PaginatedCollection) {
@process.list = Flowpack.Listable:List {
listTitle = 'My List'
archiveLink = '~/page-path-or-identifier'
archiveLinkTitle = 'See all news'
}
collection = ${q(site).find('[instanceof Something.Custom:Here]').sort('date', 'DESC').slice(0, 6).get()}
}
Flowpack.Listable:Pagination
您还可以从 PaginatedCollection
独立使用分页。
配置选项
您可以使用的 FlowQuery 辅助工具
filterByDate
按日期类型属性过滤节点。
filterByReference
按引用或引用类型属性过滤节点。
sortRecursiveByIndex
递归按排序属性排序节点。
示例
${q(site).find('[instanceof Neos.Neos:Document]').sortRecursiveByIndex('DESC').get()}