внутрішні посилання


143

Jekyll використовує посилання у форматі Markdown, але як я можу зв’язати внутрішній вміст?

[[link]] 

Відповіді:


249

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

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

На це також посилається в Документації Джекілла .

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


17
Будь-яка ідея, як внутрішньо посилатися на сторінку?
Dogweather

1
Схоже, посилання на сторінку неможливо. Цей PR був закритий без злиття: github.com/jekyll/jekyll/pull/369
northben

1
Чи можливо, щоб заголовок легко відображався, наприклад, рендерінг [Title of post](/correct/permalink)за допомогою однієї команди? Я міг це зробити лише за допомогою фільтрації, яка занадто багатослівна.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Якщо у вас є підкаталоги: [Текст посилання] ({% post_url / dirname / 2010-07-21-пост%})
alexsalo

Одна невелика помилка: Документація Джекілла це post-urlне такpost_url
Хан Циу

40

Тепер можна посилатися на інші сторінки, крім публікацій, використовуючи 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 %})

Див. Документацію Джекілла .


2
Я також вважаю цю сторінку документації корисною - jekyllrb.com/docs/liquid/tags/#link
Девід Дуглас

2
Щойно я виявив, що використовувати це не потрібно, {{ site.baseurl }}оскільки він подвоює базове значення в генерованому href. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
олекса

Вам потрібно використовувати site.baseurl на Jekyll 3.x, він більше не потрібен у 4.x. Але Сторінки все ще тримаються на 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 %}

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)

Це працює, навіть якщо ви хочете посилатися на інші елементи, крім заголовків.
Антоніо Вініцій Менез Медей

1
Це саме те, що я шукав. Дякую!
Wimateeka

Таке елегантне рішення!
Robur_131

Це також можна розширити для посилань на інших сторінках. наприклад: [текст] (/ шлях / до / файл / # funky)
Robur_131

8

У Джекілла існує декілька способів зв’язку, деякі з яких застаріли.

З тегами посилань

Рекомендований спосіб посилання на внутрішні файли - це

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

Зауважте, що це призведе до помилки, якщо файл переміщується або видаляється.

З постійними посиланнями

Для посилання на сторінку, не викликаючи помилок (замість цього зламані посилання):

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

Зауважте, що тут вам потрібно знати постійну посилання на сторінку та пройти її через relative_urlфільтр, щоб переконатися, що вона встановлена ​​з базовим URL-адресою сайту.

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

Із стосунками джекілла

Якщо ви хочете використовувати відносні шляхи (і хочете, щоб посилання працювали у вікні розмітки GitHub), вам слід скористатися jekyll-relative-links. Це дозволяє писати посилання на кшталт:

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

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

0

Уявіть, що це ваш каталог проектів:

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

Щоб пов’язати "index.md" з файлом всередині папки "blog" під назвою "20190920-post1.md", виконайте наступне:

  1. Відкрийте файл "index.md".
  2. Додайте наступне:

    [будь-який текст] (./ відносний шлях)

Наприклад:

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

Вихід:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.