首页 > 解决方案 > 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

如果没有更好的答案,我可能只需要返回使用绝对外部链接。

标签: jekyll

解决方案


解决方案 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/应该可以解决问题(如果您使用降价链接)。这应该只需要几秒钟。


推荐阅读