使用 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 行为

Kentico,带有用于上传 CSV 的 Web 部件的模块

Kentico 11:在 text/xml 转换中使用变量

如何隐藏一些 Kentico 博客评论字段?