jekyll markdown enlaces internos


143

Jekyll utiliza enlaces con formato Markdown, pero ¿cómo puedo vincularme a contenido interno?

[[link]] 

Respuestas:


249

Ahora puede publicar enlaces internos utilizando lo siguiente:

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

Esto también se menciona en la documentación de Jekyll .

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


17
¿Alguna idea de cómo vincular internamente a una página?
— Dogweather

1
Parece que no es posible vincular a una página. Este RP se cerró sin fusionarse: github.com/jekyll/jekyll/pull/369
— northben el

1
¿Es posible que el título se muestre fácilmente, por ejemplo, renderizar [Title of post](/correct/permalink)con un solo comando? Solo pude hacerlo con un filtro que es demasiado detallado.
— Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Si tiene subdirecciones: [Texto del enlace] ({% post_url / dirname / 2010-07-21-post%})
— alexsalo

Un pequeño error: Jekyll Documentación Es post-urlnopost_url
— Han Qiu

40

Ahora es posible vincular a páginas que no sean publicaciones usando la linketiqueta. linkfunciona para publicaciones, páginas, documentos en una colección y archivos.

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

Recuerde incluir la extensión del archivo cuando use la linketiqueta. Para usarlo para crear un enlace:

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

Ver la documentación de Jekyll .


2
También encontré útil esta página de documentación - jekyllrb.com/docs/liquid/tags/#link
— David Douglas

2
Acabo de descubrir que no hay necesidad de usar {{ site.baseurl }}ya que duplica el valor baseurl en el href generado. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
— oleksa

Necesita usar site.baseurl en Jekyll 3.x, ya no es necesario en 4.x. Pero Pages todavía está atascado en 3.x como la versión máxima, AFAIK.
— Henry Schreiner

26

Para las páginas, decidieron no agregar una page_urletiqueta porque de todos modos tendrías que conocer la ruta de la página. Entonces solo tienes que vincularlo manualmente:

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

O puede hacer algo grande y feo como este si desea obtener programáticamente el título de la página:

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

14

Si el contenido interno está en la misma página, entonces es posible vincularlo usando la auto_idsfunción. Lo habilitas en _config.yml:

kramdown:
    auto_ids: true

Con esto habilitado, cada encabezado obtiene una idreferencia basada en el texto del encabezado. Por ejemplo

### My Funky Heading

se convertirá

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

Puede vincular esto desde el mismo documento haciendo algo como esto:

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

Puede asignar una identificación explícita si lo prefiere:

### My Funky Heading
{: #funky }

y enlace a ella

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

Eso funciona incluso si desea hacer referencia a otros elementos que no sean títulos.
— Antonio Vinicius Menezes Medei

1
Esto es exactamente lo que estaba buscando. ¡Gracias!
— Wimateeka

¡Una solución tan elegante!
— Robur_131

Esto también se puede ampliar para enlaces en otras páginas. por ejemplo: [texto] (/ ruta / a / archivo / # funky)
— Robur_131

8

Hay múltiples formas de vinculación en Jekyll, algunas de las cuales ahora están desactualizadas.

Con etiquetas de enlace

La forma recomendada de vincular a archivos internos es

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

Tenga en cuenta que esto provocará un error si el archivo se mueve o se elimina.

Con enlaces permanentes

Para vincular a una página sin causar errores (en su lugar, enlaces rotos):

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

Tenga en cuenta que aquí debe conocer el enlace permanente de la página y pasarlo por el relative_urlfiltro para asegurarse de que tiene el prefijo de la URL base del sitio.

El enlace permanente de una página depende de la permalinkconfiguración en su archivo de configuración y la permalinkclave en la parte delantera del archivo.

Con enlaces jekyll-relative

Si desea usar rutas relativas (y desea que los enlaces funcionen en la vista de rebajas de GitHub), debe usar jekyll-relative-links. Esto le permite escribir enlaces como:

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

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

0

Imagina que este es el directorio de tu proyecto:

directorio de proyectos

Para vincular "index.md" a un archivo dentro de la carpeta "blog" llamado "20190920-post1.md", haga lo siguiente:

  1. Abra el archivo "index.md".
  2. Agregue lo siguiente:

    [cualquier texto] (./ ruta relativa)

Por ejemplo:

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

Salida:

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.