我正在建立一个具有Sanity后端的盖茨比投资组合网站。该网站的首页将包含一个链接到博客文章的图块网格。我希望博客文章URL具有以下结构:
'博客/ [ publishedDate ] / [ slugifiedTitle ]'例如-'blog / 2019-10-15 / my-first-发布”
我已经通过GraphQL获得PublishedDate和Slug并在前端使用Javascript函数将它们连接在一起并设置URL格式来实现这一点。但是,我用于本节布局的Tile Grid React组件可能会用于非Blog内容。因此,我想知道如何通过已经具有上述格式的代码段来在Sanity中对URL进行这种格式设置。
我猜测我可以通过here所示的自定义Slugify函数来实现此目的,但是我不确定如何/是否有可能从Slug的模式定义中引用另一种模式类型?
任何对此的指点都会对您有很大的帮助,谢谢。
答案 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),
},
},