簡體   English   中英

Sanity.io CMS – 編程模式類型

[英]Sanity.io CMS – program a schema type

我已經創建了一個架構類型,如下所示,我想對其進行編程,以便為每篇博客文章增加:1 - 第一篇文章,2 - 第二篇文章,依此類推(然后這個數字將用於多個頁面) . 一件簡單的事情,但我找不到有關如何做的任何信息。 這有沒有可能? 任何鏈接/示例/參考將不勝感激。

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

謝謝

您不一定需要在架構中添加此計數。 我在架構中看到的一些問題包括:

  1. 您刪除了一篇文章——其他人的索引是否應該反映這一點? 例如,如果第 10 條被刪除,第#11條是否應該變成#10
  2. 一篇文章已創建但從未發布 - 即使其他較新的文章已經發布,它是否應該保留索引?
  3. 如果意外數字重合並且索引被共享,會發生什么? 除了_ids本身之外,Sanity 目前對字段沒有unique功能,因此這可能會很成問題。

另一種方法是通過 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指南中概述的那樣 😉

希望這有幫助🙏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM