jekyll - Jekyll 内部帖子链接
问题描述
这是一个非常小众的问题,但是……我在 Jekyll 上运行了一个博客,并且经常发帖。为了让我的编辑保持理智,我定期存档帖子,这些存档帖子的结构非常严格。但是,我在归档前整整一年。
这会伤害到其他帖子的链接。我曾经能够绝对引用文件名(每个jekyll markdown internal links),但这似乎已被弃用:
Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.
现在,如果我必须包含文件的完整路径,那么当我归档这一年的帖子时,我必须解析全年的所有帖子并更新它们之间的任何链接以包含它们归档的新文件路径位置,完全违背了使用此工具的目的。考虑到我不经常更改 URL 结构,直接链接到该页面实际上会更好。
对于不依赖于文件结构的内部链接,是否有更好的解决方案,允许移动文件而无需更新该文件的每个链接?
示例文件结构:
_posts
-2018
-post1
-post2
-etc
-Archive
-2017
-2016
如果没有更好的答案,我可能只需要返回使用绝对外部链接。
解决方案
解决方案 1. 使用您自己的包含
创建一个 post_url.html 文件并写下这个:
{% include post_url.html slug="2018-09-06-peppermint" %}
包含(称为 post_url.html)应该找到带有正确 slug 的帖子并回显链接,如下所示:
{% assign link = site.posts | where:'slug',include.slug %}
<a href="{{ link[0].url }}">{{ link[0].title }}</a>
解决方案 2. 搜索和替换
你必须解析帖子?对所有文件进行简单的搜索和替换,查找(/2018/
和替换(/Archive/2018/
应该可以解决问题(如果您使用降价链接)。这应该只需要几秒钟。
推荐阅读
- angular - 我是量角器的新手,按照官方网站(http://protractortest.org)中给出的步骤进行操作。结束了这个错误
- reactjs - 如何捕获模式打开编辑项目的 ID 值?
- c++ - vcpkg:如何为每个项目安装软件包(不是用户范围的)?
- angular - 我想连续访问数据。意味着每次更改 API 都应该为我提供更新的数据
- apache-flink - Apache Flink 异常处理
- asp.net-core - 生产永远不会重定向到 https,即使 api 启用了 https 重定向
- cordova - this.file.listDir 不会返回 applicationStorageDirectory 下的文件夹
- r - 如何使用列作为上限进行积分
- html - 某些文本上的重音损坏/未对齐
- sql - 总结 GROUP BY 结果