jekyll markdown内部リンク


143

JekyllはMarkdown形式のリンクを使用していますが、内部コンテンツにリンクするにはどうすればよいですか?

[[link]] 

回答:


249

以下を使用して、内部リンクを投稿できるようになりました。

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

これはJekyllドキュメンテーションでも参照されています。

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


17
内部的にページにリンクする方法はありますか?
Dogweather、2012年

1
ページにリンクできないようです。このPRはマージされずにクローズされました:github.com/jekyll/jekyll/pull/369
northben

1
タイトルを簡単に表示すること[Title of post](/correct/permalink)はできますか?たとえば、単一のコマンドでレンダリングしますか?私はそれが冗長すぎるフィルタリングでしか行うことができませんでした。
Ciro Santilli郝海东冠状病六四事件法轮功

サブディレクトリがある場合:[リンクのテキスト]({%post_url / dirname / 2010-07-21-post%})
alexsalo

一つの小さなミス: ジキルドキュメント イッツ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値が2倍になるため、使用する必要がないことがわかりました。[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のままです。
Henry Schreiner

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)

タイトル以外の要素を参照したい場合でも機能します。
アントニオヴィニシウスメネゼスメデイ

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のマークダウンビューで機能させる場合)、を使用する必要がありますjekyll-relative-links。これにより、次のようなリンクを記述できます。

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

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

0

これがあなたのプロジェクトディレクトリであると想像してください:

プロジェクトディレクトリ

「index.md」を「20190920-post1.md」というフォルダー「ブログ」内のファイルにリンクするには、次のようにします。

  1. 「index.md」ファイルを開きます。
  2. 以下を追加します。

    [任意のテキスト](./相対パス)

例えば:

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

出力:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.