1

我正在构建一个带有Sanity后端的 Gatsby 投资组合网站。该网站的主页将具有一个链接到博客文章的图块网格。我希望博客文章 URLS 具有以下结构:

'blog/[ publishedDate ]/[ slugifiedTitle ]'例如-'blog/2019-10-15/my-first-post'

我已经通过 GraphQL 获取 PublishedDate 和 Slug 并在前端使用 Javascript 函数将它们连接在一起并格式化 URL,从而实现了这一点。但是,我用于本节布局的 Tile Grid React 组件可能会用于非博客内容。因此,我想知道如何在 Sanity 中对 URL 进行这种格式化,通过一个已经具有上述格式的 slug。

我猜我也许可以通过这里显示的自定义 slugify 函数来实现这一点,但我不确定如何/是否可以从 Slug 的架构定义中引用另一个架构类型?

对此的任何指示都会有很大帮助,在此先感谢。

4

1 回答 1

3

date-fns用于日期格式的解决方案:

{
  name: "slug",
  title: "Slug",
  type: "slug",
  options: {
    source: (doc) => {
      const date = format(new Date(doc.publishedAt), "yyyy/MM/dd");
      return `/blog/${date}/${doc.title}`;
    },
    slugify: (input) =>
      input.toLowerCase().replace(/\s+/g, "-").slice(0, 200),
  },
},
于 2020-09-19T10:01:10.523 回答