Jekyll Markdown linki wewnętrzne


143

Jekyll używa linków sformatowanych w Markdown, ale jak mogę utworzyć linki do treści wewnętrznych?

[[link]] 

Odpowiedzi:


249

Możesz teraz publikować linki wewnętrzne, korzystając z:

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

Jest to również wymienione w dokumentacji Jekyll .

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


17
Masz jakiś pomysł, jak utworzyć wewnętrzny link do strony?
Dogweather

1
Wygląda na to, że nie można utworzyć linku do strony. Ten PR został zamknięty bez połączenia: github.com/jekyll/jekyll/pull/369
northben

1
Czy możliwe jest łatwe wyświetlenie tytułu, np. Renderowanie do [Title of post](/correct/permalink)za pomocą jednego polecenia? Mogłem to zrobić tylko z filtrowaniem, które jest zbyt szczegółowe.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jeśli masz podkatalogi: [Link's Text] ({% post_url / dirname / 2010-07-21-post%})
alexsalo

Jeden mały błąd: Dokumentacja Jekyll To post-urlnie jestpost_url
Han Qiu

40

Za pomocą linktagu można teraz tworzyć linki do stron innych niż posty . linkdziała dla postów, stron, dokumentów w kolekcji i plików.

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

Pamiętaj, aby w przypadku używania linktagu podać rozszerzenie pliku . Aby użyć go do utworzenia łącza:

[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 %})

Zobacz dokumentację Jekyll .


2
Również ta strona z dokumentacją okazała się
David Douglas

2
Właśnie odkryłem, że nie ma potrzeby używania, {{ site.baseurl }}ponieważ podwaja wartość baseurl w wygenerowanym href. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
oleksa

Musisz użyć site.baseurl w Jekyll 3.x, nie jest już potrzebny w 4.x. Ale Pages nadal utknęła na 3.x jako wersja maksymalna, AFAIK.
Henry Schreiner

26

W przypadku stron zdecydowali się nie dodawać page_urltagu, ponieważ i tak musiałbyś znać ścieżkę do strony. Musisz więc tylko ręcznie połączyć się z nim:

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

Lub możesz zrobić coś dużego i brzydkiego w ten sposób, jeśli chcesz programowo uzyskać tytuł strony:

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

14

Jeśli zawartość wewnętrzna znajduje się na tej samej stronie, można utworzyć do niej link za pomocą tej auto_idsfunkcji. Włączasz to w _config.yml:

kramdown:
    auto_ids: true

Gdy ta opcja jest włączona, każdy nagłówek otrzymuje odniesienie na idpodstawie tekstu nagłówka. Na przykład

### My Funky Heading

stanie się

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

Możesz utworzyć link do tego z tego samego dokumentu, wykonując coś takiego:

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

Jeśli wolisz, możesz przypisać wyraźny identyfikator:

### My Funky Heading
{: #funky }

i link do niego

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

Działa to nawet wtedy, gdy chcesz odwołać się do innych elementów niż tytuły.
Antonio Vinicius Menezes Medei

1
To jest dokładnie to, czego szukałem. Dzięki!
Wimateeka

Takie eleganckie rozwiązanie!
Robur_131

Można to również rozszerzyć o linki na innych stronach. np .: [tekst] (/ ścieżka / do / pliku / # funky)
Robur_131

8

W Jekyll istnieje wiele sposobów łączenia, z których niektóre są obecnie nieaktualne.

Ze znacznikami linków

Zalecany sposób tworzenia linków do plików wewnętrznych to

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

Pamiętaj, że spowoduje to błąd, jeśli plik zostanie przeniesiony lub zostanie usunięty.

Z permalinkami

Aby utworzyć łącze do strony bez powodowania błędów (zamiast tego niedziałające linki):

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

Zauważ, że tutaj musisz znać permalink strony i przepuścić go przez relative_urlfiltr, aby upewnić się, że jest poprzedzony podstawowym adresem URL witryny.

Link bezpośredni do strony zależy od permalinkustawień w pliku konfiguracyjnym i permalinkklucza w pierwszej części pliku.

Z linkami względnymi jekyll

Jeśli chcesz używać ścieżek względnych (i chcesz, aby linki działały w widoku przecen GitHub), powinieneś użyć jekyll-relative-links. Dzięki temu możesz pisać linki takie jak:

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

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

0

Wyobraź sobie, że to jest katalog Twojego projektu:

katalog projektu

Aby połączyć „index.md” z plikiem w folderze „blog” o nazwie „20190920-post1.md”, wykonaj następujące czynności:

  1. Otwórz plik „index.md”.
  2. Dodaj następujące informacje:

    [dowolny tekst] (./ ścieżka względna)

Na przykład:

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

Wynik:

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.