Jekyll Markdown interne Links


143

Jekyll verwendet Markdown-formatierte Links, aber wie kann ich auf interne Inhalte verlinken?

[[link]] 

Antworten:


249

Sie können jetzt interne Links verwenden, indem Sie Folgendes verwenden:

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

Dies wird auch in der Jekyll-Dokumentation erwähnt .

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


17
Irgendeine Idee, wie man intern auf eine Seite verlinkt?
Dogweather

1
Es scheint nicht möglich zu sein, auf eine Seite zu verlinken. Diese PR wurde geschlossen, ohne zusammengeführt zu werden: github.com/jekyll/jekyll/pull/369
Northben

1
Ist es möglich, den Titel einfach anzuzeigen, z. B. [Title of post](/correct/permalink)mit einem einzigen Befehl zu rendern ? Ich konnte es nur mit einer zu ausführlichen Filterung tun.
Ciro Santilli 3 冠状 病. 事件 法轮功

Wenn Sie Unterverzeichnisse haben: [Link's Text] ({% post_url / dirname / 2010-07-21-post%})
alexsalo

Ein kleiner Fehler: Jekyll Documentation Es ist post-urlnichtpost_url
Han Qiu

40

Es ist jetzt möglich, mithilfe des linkTags auf andere Seiten als Beiträge zu verlinken . linkFunktioniert für Beiträge, Seiten, Dokumente in einer Sammlung und Dateien.

{{ 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 %}

Denken Sie daran, die Dateierweiterung anzugeben, wenn Sie das linkTag verwenden. So erstellen Sie einen 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 %})

Siehe Jekyll-Dokumentation .


2
Ich fand auch diese Dokumentationsseite hilfreich - jekyllrb.com/docs/liquid/tags/#link
David Douglas

2
Ich habe gerade festgestellt, dass es nicht erforderlich ist, es zu verwenden, {{ site.baseurl }}da es den Basiswert in der generierten href verdoppelt. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
Oleksa

Sie müssen site.baseurl unter Jekyll 3.x verwenden, es wird in 4.x nicht mehr benötigt. Aber Pages steckt immer noch in 3.x als Max-Version, AFAIK.
Henry Schreiner

26

Für Seiten haben sie beschlossen, kein page_urlTag hinzuzufügen, da Sie den Pfad der Seite sowieso kennen müssten. Sie müssen also nur manuell darauf verlinken:

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

Oder Sie können so etwas Großes und Hässliches tun, wenn Sie den Titel der Seite programmgesteuert abrufen möchten:

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

14

Befindet sich der interne Inhalt auf derselben Seite, kann über die auto_idsFunktion eine Verknüpfung hergestellt werden . Sie aktivieren dies in _config.yml:

kramdown:
    auto_ids: true

Wenn diese Option aktiviert ist, erhält jede Überschrift eine idReferenz basierend auf dem Überschriftentext. Beispielsweise

### My Funky Heading

wird werden

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

Sie können aus demselben Dokument heraus darauf verlinken, indem Sie Folgendes tun:

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

Sie können eine explizite ID zuweisen, wenn Sie Folgendes bevorzugen:

### My Funky Heading
{: #funky }

und verlinke darauf

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

Dies funktioniert auch dann, wenn Sie auf andere Elemente als Titel verweisen möchten.
Antonio Vinicius Menezes Medei

1
Genau das habe ich gesucht. Vielen Dank!
Wimateeka

So eine elegante Lösung!
Robur_131

Dies kann auch für Links auf anderen Seiten erweitert werden. Beispiel: [text] (/ path / to / file / # funky)
Robur_131

8

In Jekyll gibt es mehrere Verknüpfungsmöglichkeiten, von denen einige mittlerweile veraltet sind.

Mit Link-Tags

Die empfohlene Methode zum Verknüpfen mit internen Dateien ist

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

Beachten Sie, dass dies einen Fehler verursacht, wenn die Datei verschoben oder gelöscht wird.

Mit Permalinks

So verlinken Sie auf eine Seite, ohne Fehler zu verursachen (stattdessen defekte Links):

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

Beachten Sie, dass Sie hier den Permalink der Seite kennen und ihn durch den relative_urlFilter führen müssen, um sicherzustellen, dass der Basis-URL der Site ein Präfix vorangestellt ist.

Der Permalink einer Seite hängt von der permalinkEinstellung in Ihrer Konfigurationsdatei und dem permalinkSchlüssel im vorderen Bereich der Datei ab.

Mit Jekyll-Relativ-Links

Wenn Sie relative Pfade verwenden möchten (und möchten, dass die Links in der Markdown-Ansicht von GitHub funktionieren), sollten Sie diese verwenden jekyll-relative-links. Auf diese Weise können Sie Links schreiben wie:

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

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

0

Stellen Sie sich vor, dies ist Ihr Projektverzeichnis:

Projektverzeichnis

Gehen Sie wie folgt vor, um "index.md" mit einer Datei im Ordner "blog" mit dem Namen "20190920-post1.md" zu verknüpfen:

  1. Öffnen Sie die Datei "index.md".
  2. Fügen Sie Folgendes hinzu:

    [beliebiger Text] (./ relativer Pfad)

Beispielsweise:

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

Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.