jekyll markdown内部链接


Answers:


249

您现在可以使用以下方法发布内部链接:

[Some Link]({% post_url 2010-07-21-name-of-post %})

Jekyll文档中也对此进行了引用。

https://github.com/mojombo/jekyll/pull/369


17
知道如何在内部链接到页面吗?
Dogweather

1
似乎无法链接到页面。此PR已关闭而未合并:github.com/jekyll/jekyll/pull/369
northben 2014年

1
是否有可能使标题易于显示,例如[Title of post](/correct/permalink)使用单个命令进行渲染?我只能用太冗长的过滤来做到这一点。
Ciro Santilli郝海东冠状病六四事件法轮功2014年

如果您有子目录:[链接文本]({%post_url / dirname / 2010-07-21-post%})
alexsalo 2015年

一个小错误: 杰奇文档post-url不是post_url
韩秋

40

现在可以使用link标签链接到帖子以外的页面。link适用于帖子,页面,集合中的文档和文件。

{{ site.baseurl }}{% link _collection/name-of-document.md %}
{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}
{{ site.baseurl }}{% link news/index.html %}
{{ site.baseurl }}{% link /assets/files/doc.pdf %}

使用link标记时,请记住包括文件扩展名。要使用它创建链接:

[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %})
[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %})
[Link to a page]({{ site.baseurl }}{% link news/index.html %})
[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %})

请参阅Jekyll文档


2
我还发现此文档页面对您有所帮助-jekyllrb.com/docs/liquid/tags/#link
David Douglas

2
我刚刚发现没有必要使用{{ site.baseurl }}它,因为它将生成的href中的baseurl值加倍。[Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
oleksa

您需要在Jekyll 3.x上使用site.baseurl,在4.x中不再需要它。但是Pages仍停留在3.x作为最大版本AFAIK。
亨利·施莱纳

26

对于页面,他们决定不添加page_url标签,因为无论如何您都必须知道页面的路径。因此,您只需要手动链接到它:

[My page](/path/to/page.html)

或者,如果您要以编程方式获取页面标题,则可以执行类似此类的大而丑陋的操作:

{% for page in site.pages %}
  {% if page.url == '/path/to/page.html' %}
[{{ page.title }}]({{ page.url }})
  {% endif %}
{% endfor %}

14

如果内部内容在同一页面上,则可以使用该auto_ids功能链接到它。您可以在中启用此功能_config.yml

kramdown:
    auto_ids: true

启用此功能后,每个标题都会获得id基于标题文本的参考。例如

### My Funky Heading

会变成

<h3 id="my-funky-heading">My Funky Heading</h3>

您可以通过执行以下操作从同一文档中链接到此文件:

The funky text is [described below](#my-funky-heading)

如果您愿意,可以分配一个明确的ID:

### My Funky Heading
{: #funky }

并链接到它

The funky text is [described below](#funky)

即使您要引用标题以外的其他元素,该方法也有效。
Antonio Vinicius Menezes Medei

1
这正是我想要的。谢谢!
Wimateeka

如此优雅的解决方案!
Robur_131

也可以将其扩展为其他页面中的链接。例如:[文字](/ path / to / file /#funky)
Robur_131

8

Jekyll中有多种链接方式,其中有些已经过时。

带链接标签

推荐的链接到内部文件的方法是

[Link]({{ site.baseurl }}{% link path/to/file.md %})

请注意,如果文件移动或被删除,这将导致错误。

带有永久链接

链接到页面而不引起错误(链接断开):

[Link]({{ '/path/to/page/' | relative_url }})

请注意,这里您需要了解页面的永久链接,并将其通过relative_url过滤器,以确保它以站点的基本URL为前缀。

页面的永久链接取决于permalink配置文件中的设置以及文件开头的permalink键。

与jekyll相对链接

如果您想使用相对路径(并且希望链接在GitHub的markdown视图中工作),则应使用jekyll-relative-links。这使您可以编写如下链接:

[Link](./path/to/file.md)

[Link to file in parent folder](../file.md)

0

想象这是您的项目目录:

项目目录

要将“ index.md”链接到文件夹“ blog”中名为“ 20190920-post1.md”的文件,请执行以下操作:

  1. 打开文件“ index.md”。
  2. 添加以下内容:

    [任何文字](./相对路径)

例如:

- [Sept 20th 2019 - Kikucare's Journey](./blog/20190920-post1.md)

输出:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.