Sanity.io CMS – 编程模式类型
Sanity.io CMS – program a schema type
我已经创建了一个架构类型,如下所示,我想对其进行编程,以便对于每个博客 post 它递增:1 - 第一个 post,2 - 第二个 post,等等(那么这个数字将在多个页面上使用)。一件简单的事情,但我找不到任何关于如何做的信息。这有没有可能?任何 links/examples/references 将不胜感激。
// schemas/post.js
{
name: 'index',
title: 'Index',
type: 'number',
},
谢谢
您不一定需要在架构中添加此计数。我在模式中看到的一些问题包括:
- 您删除了一篇文章 - 其他人的索引应该反映这一点吗?例如,如果删除第 10 篇文章
#11
是否应该变为 #10
?
- 一篇文章已创建但从未发布 - 即使其他较新的文章已经发布,它是否应该有一个保留索引?
- 如果不小心数字重合并且共享索引会怎样? Sanity 目前没有
unique
字段的功能,除了 _ids
本身,所以这可能是非常有问题的。
另一种方法是通过 GROQ 动态获取此值,(我认为)这种方法在未来更有弹性且更容易更改。
这是一个示例查询:
*[slug == $articleSlug]{
...,
// Count every older article and add 1 - that's the current article's index
"articleIndex": count(*[
// From every published article (non-draft)
_type == 'article' &&
!(_id in path("drafts.**")) &&
// Get only those older than the current one
_createdAt > ^._createdAt
]) + 1
}
如果您发现查询变得复杂且难以管理,我建议将其部分抽象为变量,正如我在 GROQ guide on writing complex queries
中概述的那样
希望对您有所帮助
我已经创建了一个架构类型,如下所示,我想对其进行编程,以便对于每个博客 post 它递增:1 - 第一个 post,2 - 第二个 post,等等(那么这个数字将在多个页面上使用)。一件简单的事情,但我找不到任何关于如何做的信息。这有没有可能?任何 links/examples/references 将不胜感激。
// schemas/post.js
{
name: 'index',
title: 'Index',
type: 'number',
},
谢谢
您不一定需要在架构中添加此计数。我在模式中看到的一些问题包括:
- 您删除了一篇文章 - 其他人的索引应该反映这一点吗?例如,如果删除第 10 篇文章
#11
是否应该变为#10
? - 一篇文章已创建但从未发布 - 即使其他较新的文章已经发布,它是否应该有一个保留索引?
- 如果不小心数字重合并且共享索引会怎样? Sanity 目前没有
unique
字段的功能,除了_ids
本身,所以这可能是非常有问题的。
另一种方法是通过 GROQ 动态获取此值,(我认为)这种方法在未来更有弹性且更容易更改。
这是一个示例查询:
*[slug == $articleSlug]{
...,
// Count every older article and add 1 - that's the current article's index
"articleIndex": count(*[
// From every published article (non-draft)
_type == 'article' &&
!(_id in path("drafts.**")) &&
// Get only those older than the current one
_createdAt > ^._createdAt
]) + 1
}
如果您发现查询变得复杂且难以管理,我建议将其部分抽象为变量,正如我在 GROQ guide on writing complex queries
中概述的那样希望对您有所帮助