Sanity.io-为自定义网址添加自定义日期

时间:2019-10-18 12:04:32

标签: gatsby sanity

我正在建立一个具有Sanity后端的盖茨比投资组合网站。该网站的首页将包含一个链接到博客文章的图块网格。我希望博客文章URL具有以下结构:

'博客/ [ publishedDate ] / [ slugifiedTitle ]'例如-'blog / 2019-10-15 / my-first-发布”

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

我猜测我可以通过here所示的自定义Slugify函数来实现此目的,但是我不确定如何/是否有可能从Slug的模式定义中引用另一种模式类型?

任何对此的指点都会对您有很大的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

使用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),
  },
},