jekyll markdown enlaces internos

143

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

[[link]] 
Juan Pablo
fuente

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

Brett Hardin
fuente
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 .

elfxiong
fuente
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 %}
bmaupin
fuente
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)
starfry
fuente
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)
qwtel
fuente
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í

yogescicak
fuente