marcação interna jekyll links internos

143

O Jekyll usa links no formato Markdown, mas como posso vincular ao conteúdo interno?

[[link]] 
Juan Pablo
fonte

Respostas:

249

Agora você pode postar links internos usando o seguinte:

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

Isso também é mencionado na documentação do Jekyll .

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

Brett Hardin
fonte
17
Alguma idéia de como vincular internamente a uma página?
Dogweather
1
Parece que não é possível vincular a uma página. Este PR foi fechado sem ser mesclado: github.com/jekyll/jekyll/pull/369
northben
1
É possível fazer com que o título seja exibido facilmente, por exemplo, renderize [Title of post](/correct/permalink)com um único comando? Eu só poderia fazê-lo com a filtragem, que é muito detalhada.
Ciro Santilli resolveu
Se você tiver subdiretórios: [Texto do link] ({% post_url / dirname / 21-07-2010-post%})
alexsalo
Um pequeno erro: Jekyll Documentação É post-urlnãopost_url
Han Qiu
40

Agora é possível vincular a páginas que não sejam postagens usando o link tag. linkfunciona para postagens, páginas, documentos em uma coleção e arquivos.

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

Lembre-se de incluir a extensão do arquivo ao usar a linktag. Para usá-lo para criar um 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 %})

Veja a documentação do Jekyll .

elfxiong
fonte
2
Eu também encontrou esta página documentação útil - jekyllrb.com/docs/liquid/tags/#link
David Douglas
2
Acabei de descobrir que não há necessidade de usar, {{ site.baseurl }}pois ele dobra o valor baseurl no href gerado. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
Oleksa
Você precisa usar site.baseurl no Jekyll 3.x, não é mais necessário no 4.x. Mas o Pages ainda está preso no 3.x como a versão máxima, AFAIK.
Henry Schreiner
26

Para páginas, eles decidiram não adicionar uma page_urltag, porque você precisaria saber o caminho da página. Então você só precisa criar um link manualmente:

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

Ou você pode fazer algo grande e feio como esse se quiser obter programaticamente o título da página:

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

Se o conteúdo interno estiver na mesma página, é possível vinculá-lo usando o auto_idsrecurso. Você habilita isso em _config.yml:

kramdown:
    auto_ids: true

Com isso ativado, cada cabeçalho recebe uma idref com base no texto do cabeçalho. Por exemplo

### My Funky Heading

se tornará

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

Você pode vincular isso a partir do mesmo documento, fazendo algo assim:

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

Você pode atribuir um ID explícito se preferir:

### My Funky Heading
{: #funky }

e link para ele

The funky text is [described below](#funky)
starfry
fonte
Isso funciona mesmo se você quiser fazer referência a outros elementos além de títulos.
Antonio Vinicius Menezes Medei 20/09/19
1
Era exatamente isso que eu estava procurando. Obrigado!
Wimateeka 15/03
Uma solução tão elegante!
Robur_131
Isso também pode ser estendido para links em outras páginas. por exemplo: [texto] (/ caminho / para / arquivo / # funky)
Robur_131
8

Existem várias maneiras de vincular no Jekyll, algumas das quais estão desatualizadas.

Com tags de link

A maneira recomendada de vincular a arquivos internos é

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

Observe que isso causará um erro se o arquivo for movido ou excluído.

Com permalinks

Para vincular a uma página sem causar erros (links quebrados):

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

Observe que aqui você precisa conhecer o link permanente da página e passá-la pelo relative_urlfiltro para garantir que ela seja prefixada com o URL base do site.

O link permanente de uma página depende da permalinkconfiguração no seu arquivo de configuração e dapermalink chave na parte da frente do arquivo.

Com jekyll-relativos-links

Se você quiser usar caminhos relativos (e quiser que os links funcionem na exibição de descontos do GitHub), use jekyll-relative-links . Isso permite que você escreva links como:

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

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

Imagine que este é o diretório do seu projeto:

diretório do projeto

Para vincular "index.md" a um arquivo dentro da pasta "blog" chamado "20190920-post1.md", faça o seguinte:

  1. Abra o arquivo "index.md".
  2. Adicione o seguinte:

    [qualquer texto] (./ caminho relativo)

Por exemplo:

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

Resultado:

insira a descrição da imagem aqui

yogescicak
fonte