gatsby - 如何在网站范围内更改 Gatsby 帖子标题?
问题描述
我希望我的帖子标题是标题大小写。
它必须是站点范围的(不仅仅是在
<Helmet>
. 我想避免重复和丢失参考的可能性。我不想回到我的帖子并更新每个不是标题大小写的帖子。
有没有办法覆盖frontmatter?我尝试更改它,gatsby-node.js
但我不确定在哪里添加/更改它。
解决方案
我找到了一个我认为是 hack 的解决方案。在创建节点期间,可以通过在将onCreateNode
节点推送到节点数组之前更新节点来覆盖frontmatter。我利用postNodes
数组(gatsby-node 范围的全局数组)来创建我的博客页面。
createNodeField({ node, name: "slug", value: slug })
node.frontmatter.title = _.startCase(_.toLower(node.frontmatter.title))
postNodes.push(node)
然后,当创建帖子页面时exports.createPages
,postNodes
使用具有更新值的 。
let idx = 0;
postNodes.map(node => {
let previous = idx - 1 < 0 ? postNodes[postNodes.length - 1] : postNodes[idx - 1]
let next = idx + 1 >= postNodes.length ? postNodes[0] : postNodes[idx + 1]
createPage({
path: node.fields.slug,
component: postPage,
context: {
slug: node.fields.slug,
prev: previous.fields.slug,
next: next.fields.slug
}
})
idx += 1;
})
注意Prev 和 next 在编写该代码时不起作用,因此需要对其进行修改。
推荐阅读
- file - 在 COBOL 中写入顺序数据集使其成为无法访问的二进制文件
- python - 找不到 pytest 夹具 (pytest-bdd)
- rxjs - RxJS 运算符类似于 share(),但不会阻止辅助观察者/订阅者完成订阅
- kubernetes-helm - 如何通过helm operator更改Kafka集群broker中的Kafka.properties文件
- google-apps-script - 将文件夹 id 字符串传递给调用 DriveApp.getFolderById(id).getDateCreated() 的自定义函数时,Apps 脚本会引发错误;
- mfc - 如何在 MFC TreeControl 中绘制附加线?
- reactjs - 如何通过单击按钮使用 Reactjs 中的状态更改每个单独 div 的背景颜色?
- f# - 如何使用 F# 在 Akka.Remote 中发送带有元组的消息?
- facebook - 如何获得确切目标 ID 的受众规模?
- python - 从网页中选择选项