【问题标题】:Sanity.io - Add custom date to slug urlSanity.io - 将自定义日期添加到 slug url
【发布时间】:2020-02-15 10:24:24
【问题描述】:

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

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

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

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

任何关于这方面的建议都会有很大帮助,在此先感谢。

【问题讨论】:

    标签: gatsby sanity


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2020-11-30
      • 1970-01-01
      • 2019-09-12
      • 2018-06-29
      • 1970-01-01
      相关资源
      最近更新 更多