flowpack/listable

用于列出事物的微小扩展

安装量: 155,370

依赖者: 7

建议者: 0

安全性: 0

星标: 35

关注者: 6

分支: 17

公开问题: 8

类型:neos-package

3.6.0 2023-10-09 17:13 UTC

README

这个 Neos 包解决了一个问题:帮助您在 Fusion 中列出任何节点。想法非常简单:您通常需要显示事物的列表(例如新闻、文章等),而列出项的关注点应该与渲染项的关注点分开。此包提供了列出的坚实基础,同时允许您自行处理渲染内容。

TL;DR

  1. 使用 composer 安装包:composer require flowpack/listable 在 Packagist 上查看
  2. 如果需要分页列表,请使用 Flowpack.Listable:PaginatedCollection
  3. 如果只需要简单的列表,请使用 Flowpack.Listable:Collection(或只需 Neos.Fusion:Collection!)。
  4. 如果需要带有标题和存档链接的列表,请将您的列表包裹在 Flowpack.Listable:List 中。
  5. 为您的每个 nodetype 创建一个类型为 NodeTypeName + '.Short' 的新 Fusion 对象,或者手动定义一个渲染对象。
  6. 在覆盖设置时依赖公共 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()}