внутренние ссылки jekyll markdown

151

Jekyll использует ссылки в формате Markdown, но как я могу ссылаться на внутренний контент?

[[link]] 
Хуан Пабло
источник

Ответы:

258

Теперь вы можете размещать внутренние ссылки, используя следующее:

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

Это также упоминается в документации Jekyll .

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

Бретт Хардин
источник
17
Есть идеи, как сделать внутреннюю ссылку на страницу?
Dogweather 08
1
Похоже, ссылку на страницу невозможно. Этот PR был закрыт без объединения: github.com/jekyll/jekyll/pull/369
northben
1
Можно ли сделать так, чтобы заголовок отображался легко, например, [Title of post](/correct/permalink)с помощью одной команды? Я мог сделать это только с помощью слишком многословной фильтрации.
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
Если у вас есть подкаталоги: [Текст ссылки] ({% post_url / dirname / 2010-07-21-post%})
alexsalo
Одна маленькая ошибка: Документация Джекила, это post-urlне такpost_url
Хан Цю
44

Теперь с помощью linkтега можно ссылаться на страницы, отличные от сообщений . linkработает для сообщений, страниц, документов в коллекции и файлов.

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

Не забудьте указать расширение файла при использовании 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 %})

См. Документацию Jekyll .

elfxiong
источник
2
Я также нашел эту страницу документации полезной - jekyllrb.com/docs/liquid/tags/#link
Дэвид Дуглас
2
Я только что обнаружил, что в использовании нет необходимости, {{ site.baseurl }}поскольку он удваивает значение baseurl в сгенерированном href. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
oleksa
Вам нужно использовать site.baseurl в Jekyll 3.x, в 4.x он больше не нужен. Но Pages все еще застряли на 3.x в качестве максимальной версии, AFAIK.
Генри Шрайнер
26

Для страниц они решили не добавлять page_urlтег, потому что вам в любом случае нужно знать путь к странице. Так что вам просто нужно связать его вручную:

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

Или вы можете сделать что-то большое и уродливое вроде этого, если хотите программно получить заголовок страницы:

{% for page in site.pages %}
  {% if page.url == '/path/to/page.html' %}
[{{ page.title }}]({{ page.url }})
  {% endif %}
{% endfor %}
bmaupin
источник
14

Если внутреннее содержимое находится на той же странице, то с помощью этой auto_idsфункции можно связать его . Вы включаете это в _config.yml:

kramdown:
    auto_ids: true

Если этот параметр включен, каждый заголовок получает idссылку на основе текста заголовка. Например

### My Funky Heading

станет

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

Вы можете создать ссылку на него из того же документа, выполнив примерно следующее:

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

Вы можете назначить явный идентификатор, если хотите:

### My Funky Heading
{: #funky }

и ссылку на него

The funky text is [described below](#funky)
Starfry
источник
Это работает, даже если вы хотите ссылаться на другие элементы, кроме заголовков.
Антонио Винисиус Менезес Медей
1
Это именно то, что я искал. Благодарность!
Wimateeka,
Такое шикарное решение!
Robur_131
Это также можно расширить для ссылок на других страницах. например: [text] (/ path / to / file / # funky)
Robur_131
9

В Jekyll есть несколько способов связывания, некоторые из которых уже устарели.

С тегами ссылок

Рекомендуемый способ ссылки на внутренние файлы:

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

Обратите внимание, что это вызовет ошибку, если файл переместится или будет удален.

С постоянными ссылками

Чтобы создать ссылку на страницу без ошибок (вместо этого неработающие ссылки):

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

Обратите внимание, что здесь вам нужно знать постоянную ссылку страницы и пропустить ее через relative_urlфильтр, чтобы гарантировать, что она имеет префикс базового URL-адреса сайта.

Постоянная ссылка на страницу зависит от permalinkнастройки в вашем конфигурационном файле и permalinkключа в начале файла.

С помощью jekyll-relative-links

Если вы хотите использовать относительные пути (и хотите, чтобы ссылки работали в представлении разметки GitHub), вам следует использовать jekyll-relative-links. Это позволяет писать такие ссылки, как:

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

[Link to file in parent folder](../file.md)
qwtel
источник
0

Представьте, что это каталог вашего проекта:

каталог проекта

Чтобы связать index.md с файлом в папке blog с названием «20190920-post1.md», сделайте следующее:

  1. Откройте файл index.md.
  2. Добавьте следующее:

    [любой текст] (./ относительный путь)

Например:

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

Выход:

введите описание изображения здесь

йогешчичак
источник