微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sanity.io CMS – 编程模式类型

如何解决Sanity.io CMS – 编程模式类型

我已经创建了一个架构类型如下,我想对它进行编程,以便为每篇博文增加:1 - 第一篇文章,2 - 第二篇文章,依此类推(然后这个数字将用于多页)。一件简单的事情,但我找不到有关如何做的任何信息。这有没有可能?任何链接/示例/参考将不胜感激。

// schemas/post.js
{
  name: 'index',title: 'Index',type: 'number',},

谢谢

解决方法

您不一定需要在架构中添加此计数。我在架构中看到的一些问题包括:

  1. 您删除了一篇文章 - 其他人的索引是否应该反映这一点?例如,如果第 10 条被删除,文章 #11 是否应该变成 #10
  2. 一篇文章已创建但从未发表 - 即使其他较新的文章已经发表,它是否应该保留索引?
  3. 如果意外的数字重合并且索引被共享,会发生什么? 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 中概述的那样 ?

希望能帮到你?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。