Jekyll 杰基尔内部帖子链接

Jekyll 杰基尔内部帖子链接,jekyll,Jekyll,这是一个相当小的问题,但是。。。我在Jekyll上开了一个博客,我经常发帖子。为了保持编辑的理智,我定期将文章归档,这些归档的文章有一个非常严格的结构。但是,在归档之前我要花整整一年的时间 这会伤害到其他帖子的链接。我以前可以绝对引用文件名(per),但这似乎已被弃用: Deprecation: A call to '{% post_url 2018-09-06-peppermint %}' did not match a post using the new matching method o

这是一个相当小的问题,但是。。。我在Jekyll上开了一个博客,我经常发帖子。为了保持编辑的理智,我定期将文章归档,这些归档的文章有一个非常严格的结构。但是,在归档之前我要花整整一年的时间

这会伤害到其他帖子的链接。我以前可以绝对引用文件名(per),但这似乎已被弃用:

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" %}
include(称为post_url.html)应该找到带有正确slug的帖子并回显链接,如下所示:

{% assign link = site.posts | where:'slug',include.slug %}
<a href="{{ link[0].url }}">{{ link[0].title }}</a>
{%assign link=site.posts}其中:'slug',include.slug%}

解决方案2。搜索和替换
你必须解析帖子吗?对所有文件进行简单的搜索和替换,查找
(/2018/
)并替换为
(/Archive/2018/
)应该可以做到这一点(如果使用降价链接)。这应该只需要几秒钟。

看起来你是对的-我不使用post_url,但据我所知,它在你使用它的过程中起了作用。现在看来,无论发生什么情况,它都需要正确的路径(我不认为这是不推荐的,只是新的行为-需要完整的路径?)。还有
链接
,它的作用大致相同,但它看起来也需要路径。但是,随着我调整存档,需要路径的人实际上更有可能会改变。路径可能会改变,但链接结构不会改变。如果需要路径……考虑到这些,我实际上更容易创建绝对URL奇怪的是,他们不太可能改变。。