使用 Kentico Kontent 的对象数组未按 CMS 中设置的顺序呈现
Posted
技术标签:
【中文标题】使用 Kentico Kontent 的对象数组未按 CMS 中设置的顺序呈现【英文标题】:Array of objects not rendering in order as set in CMS, using Kentico Kontent 【发布时间】:2020-06-02 06:23:51 【问题描述】:我无法以正确的顺序呈现一组小部件。我正在使用 graphql 从 kentico 的 kontent.ai 中查询页面数据。 cms 中的页面有一个富文本字段,其中可以包含许多小部件。但是,当我控制台记录来自 graphql 数据对象的小部件项数组时,该数组不是按顺序排列的。例如,如果cms中的顺序是:
文本项、视频项、图像项
那么在对象数组中,顺序是这样的:
[图片项、文本项、视频项]
重要:这似乎只发生在我在富文本字段中使用超过 10 个小部件时。如果我最多使用十个小部件,则顺序是正确的。但如果我使用超过 10 个,则顺序不正确。
这很奇怪,因为它在我的本地或实时站点上不是按顺序呈现的,但它在我的本地同事上按顺序呈现(即使在呈现超过 10 个项目的页面上也是如此)。我们使用的是同一个分支,代码没有区别。你知道为什么会这样吗?
有什么方法可以确保数组中的顺序保持不变,就像在 cms 中一样?
这是我的查询的简化版本(它是未正确排序的 linked_items 数组):
query workDetailQuery($slug: String!)
kenticoCloudItemWorkDetailPage(fields: slug: eq: $slug )
body_text
linked_items
... on KenticoCloudItemStatsBreaker
internal
type
... on KenticoCloudItemSectionBlock
internal
type
... on KenticoCloudItemQuoteWithImages
internal
type
这是一个 gatsby 项目(版本 2.0.19),我正在使用 gatsby-source-kentico-cloud 包。
更新 所以我们设法弄清楚了!只是我机器上的默认节点版本和 netlify 使用的节点版本是 10.19.0。我们将两个版本(在我的机器上和 netlify 上)都更新到了 12.13.0,现在顺序是正确的。
【问题讨论】:
【参考方案1】:我可以在 gatsby-source-kontent v4.3.0
上重现这种行为,在我看来,这就像源插件中的一个错误。
根据source code,它确实应该保留来自 CMS 的订单 - 它在 Delivery API 响应中的顺序也是正确的。您能否在此存储库中提交错误,以便我进一步调查?
编辑:此行为是由过时的节点版本引起的。在 v12 上运行良好。
【讨论】:
以上是关于使用 Kentico Kontent 的对象数组未按 CMS 中设置的顺序呈现的主要内容,如果未能解决你的问题,请参考以下文章
使用 LINQPad 中的 Kentico API 会引发异常
如何在门户设计模式下从 Kentico 中继器输出原始 JSON 页面
Kentico:使用用户贡献 webpart 重新创建 CMSDesk 行为