liens internes de jekyll markdown


143

Jekyll utilise des liens au format Markdown, mais comment puis-je créer un lien vers du contenu interne?

[[link]] 

Réponses:


250

Vous pouvez désormais publier des liens internes en utilisant les éléments suivants:

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

Ceci est également référencé dans la documentation Jekyll .

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


17
Une idée comment créer un lien interne vers une page?
Dogweather

1
Il semble qu'il n'est pas possible de créer un lien vers une page. Ce PR a été clôturé sans être fusionné: github.com/jekyll/jekyll/pull/369
northben

1
Est-il possible d'afficher facilement le titre, par exemple le rendu [Title of post](/correct/permalink)avec une seule commande? Je ne pourrais le faire qu'avec un filtrage trop détaillé.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Si vous avez des sous-répertoires: [Texte du lien] ({% post_url / dirname / 2010-07-21-post%})
alexsalo

Une petite erreur: Jekyll Documentation Ce n'est post-urlpaspost_url
Han Qiu

40

Il est désormais possible de créer un lien vers des pages autres que des articles en utilisant la linkbalise. linkfonctionne pour les articles, les pages, les documents d'une collection et les fichiers.

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

N'oubliez pas d'inclure l'extension de fichier lors de l'utilisation de la linkbalise. Pour l'utiliser pour créer un lien:

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

Voir la documentation Jekyll .


2
J'ai également trouvé cette page de documentation utile - jekyllrb.com/docs/liquid/tags/#link
David Douglas

2
Je viens de {{ site.baseurl }}découvrir qu'il n'est pas nécessaire d'utiliser car il double la valeur baseurl dans le href généré. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
oleksa

Vous devez utiliser site.baseurl sur Jekyll 3.x, il n'est plus nécessaire dans 4.x. Mais Pages est toujours bloqué sur 3.x en tant que version maximale, AFAIK.
Henry Schreiner le

26

Pour les pages, ils ont décidé de ne pas ajouter de page_urlbalise car il fallait de toute façon connaître le chemin de la page. Il vous suffit donc de le lier manuellement:

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

Ou vous pouvez faire quelque chose de grand et de laid comme celui-ci si vous voulez obtenir le titre de la page par programme:

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

14

Si le contenu interne est sur la même page, il est possible de créer un lien vers celui-ci à l'aide de la auto_idsfonctionnalité. Vous activez ceci dans _config.yml:

kramdown:
    auto_ids: true

Lorsque cette option est activée, chaque titre obtient une idréférence basée sur le texte du titre. Par exemple

### My Funky Heading

va devenir

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

Vous pouvez créer un lien vers celui-ci à partir du même document en faisant quelque chose comme ceci:

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

Vous pouvez attribuer un identifiant explicite si vous préférez:

### My Funky Heading
{: #funky }

et un lien vers celui-ci

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

Cela fonctionne même si vous souhaitez référencer d'autres éléments que des titres.
Antonio Vinicius Menezes Medei

1
Ceci est exactement ce que je cherchais. Merci!
Wimateeka

Une solution si élégante!
Robur_131

Cela peut également être étendu pour les liens dans d'autres pages. par exemple: [text] (/ chemin / vers / fichier / # funky)
Robur_131

8

Il existe plusieurs façons de créer des liens dans Jekyll, dont certaines sont désormais obsolètes.

Avec des balises de lien

La méthode recommandée pour créer un lien vers des fichiers internes est

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

Notez que cela provoquera une erreur si le fichier se déplace ou est supprimé.

Avec permaliens

Pour créer un lien vers une page sans provoquer d'erreurs (liens rompus à la place):

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

Notez qu'ici vous devez connaître le permalien de la page et le passer à travers le relative_urlfiltre pour vous assurer qu'il est préfixé avec l'url de base du site.

Le lien permanent d'une page dépend du permalinkparamètre dans votre fichier de configuration et de la permalinkclé dans l'avant-plan du fichier.

Avec jekyll-relative-links

Si vous souhaitez utiliser des chemins relatifs (et que les liens fonctionnent dans la vue de démarquage de GitHub), vous devez utiliser jekyll-relative-links. Cela vous permet d'écrire des liens comme:

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

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

0

Imaginez qu'il s'agit du répertoire de votre projet:

répertoire du projet

Pour lier «index.md» à un fichier dans le dossier «blog» appelé «20190920-post1.md», procédez comme suit:

  1. Ouvrez le fichier "index.md".
  2. Ajoutez ce qui suit:

    [n'importe quel texte] (./ chemin relatif)

Par exemple:

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

Production:

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.