jekyll markdown内部链接

Jua*_*blo 133 markdown jekyll

Jekyll使用Markdown格式的链接,但我如何链接到内部内容?

[[link]] 
Run Code Online (Sandbox Code Playgroud)

Bre*_*din 234

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

[Some Link]({% post_url 2010-07-21-name-of-post %})
Run Code Online (Sandbox Code Playgroud)

这也在Jekyll文档中引用.

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

  • 知道如何在内部链接到页面吗? (14认同)
  • 看起来无法链接到页面。此 PR 已关闭但未合并:https://github.com/jekyll/jekyll/pull/369 (2认同)

elf*_*ong 32

现在可以使用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 %}
Run Code Online (Sandbox Code Playgroud)

请记住在使用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 %})
Run Code Online (Sandbox Code Playgroud)

请参阅Jekyll文档.

  • 我还发现这个文档页面很有帮助 - https://jekyllrb.com/docs/liquid/tags/#link (3认同)
  • 我刚刚发现不需要使用 `{{ site.baseurl }}` 因为它使生成的 href 中的 baseurl 值加倍。`[链接到帖子]({% link _posts/2016-07-26-name-of-post.md %})` (3认同)
  • Jekyll 3.x 上需要使用 site.baseurl,4.x 中不再需要。但据我所知,Pages 仍然停留在 3.x 作为最高版本。 (3认同)

bma*_*pin 27

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

[My page](/path/to/page.html)
Run Code Online (Sandbox Code Playgroud)

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

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


qwt*_*tel 8

在Jekyll中有多种链接方式,其中一些现在已经过时了.

使用链接标签

建议的链接到内部文件的方法是

[Link]({{ site.baseurl }}{% link path/to/file.md %})
Run Code Online (Sandbox Code Playgroud)

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

随着永久链接

链接到页面而不会导致错误(改为链接断开):

[Link]({{ '/path/to/page/' | relative_url }})
Run Code Online (Sandbox Code Playgroud)

请注意,在这里您需要知道页面的永久链接并将其传递给relative_url过滤器,以确保它以站点的基本URL为前缀.

页面的永久链接取决于permalink配置文件中的设置和文件permalink前面的密钥.

使用jekyll-relative-links

如果你想使用相对路径(并希望链接在GitHub的降价视图中工作),你应该使用jekyll-relative-links.这可以让你编写如下链接:

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

[Link to file in parent folder](../file.md)
Run Code Online (Sandbox Code Playgroud)


sta*_*fry 5

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

kramdown:
    auto_ids: true
Run Code Online (Sandbox Code Playgroud)

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

### My Funky Heading
Run Code Online (Sandbox Code Playgroud)

会变成

<h3 id="my-funky-heading">My Funky Heading</h3>
Run Code Online (Sandbox Code Playgroud)

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

The funky text is [described below](#my-funky-heading)
Run Code Online (Sandbox Code Playgroud)

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

### My Funky Heading
{: #funky }
Run Code Online (Sandbox Code Playgroud)

并链接到它

The funky text is [described below](#funky)
Run Code Online (Sandbox Code Playgroud)