jekyll markdown liên kết nội bộ


143

Jekyll sử dụng các liên kết được định dạng Markdown, nhưng làm cách nào tôi có thể liên kết với nội dung bên trong?

[[link]] 

Câu trả lời:


249

Bây giờ bạn có thể đăng liên kết nội bộ bằng cách sử dụng như sau:

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

Điều này cũng được tham chiếu trong Tài liệu Jekyll .

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


17
Bất kỳ ý tưởng làm thế nào để liên kết nội bộ đến một trang?
Dogweather

1
Có vẻ như không thể liên kết đến một trang. PR này đã bị đóng mà không được hợp nhất: github.com/jekyll/jekyll/pull/369
southben

1
Có thể có được tiêu đề để hiển thị dễ dàng, ví dụ như kết xuất [Title of post](/correct/permalink)với một lệnh duy nhất? Tôi chỉ có thể làm điều đó với bộ lọc quá dài dòng.
Ciro Santilli 郝海东 冠状 病 事件

Nếu bạn có thư mục con: [Văn bản của liên kết] ({% post_url / dirname / 2010-07-21-post%})
alexsalo

Một lỗi nhỏ: Tài liệu Jekyll Không post-urlphảipost_url
Han Qiu

40

Bây giờ có thể liên kết đến các trang khác ngoài các bài đăng bằng linkthẻ. linkhoạt động cho bài viết, trang, tài liệu trong một bộ sưu tập và tập tin.

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

Nhớ bao gồm phần mở rộng tập tin khi sử dụng linkthẻ. Để sử dụng nó để tạo một liên kết:

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

Xem Tài liệu Jekyll .


2
Tôi cũng thấy trang tài liệu này hữu ích - jekyllrb.com/docs/lowder/tags/#link
David Douglas

2
Tôi vừa thấy rằng không cần sử dụng {{ site.baseurl }}vì nó nhân đôi giá trị cơ bản trong các href được tạo. [Link to a post]({% link _posts/2016-07-26-name-of-post.md %})
oleksa

Bạn cần sử dụng site.baseurl trên Jekyll 3.x, nó không còn cần thiết trong 4.x. Nhưng Pages vẫn bị kẹt trên 3.x là phiên bản tối đa, AFAIK.
Henry Schreiner

26

Đối với các trang, họ quyết định không thêm page_urlthẻ vì dù sao bạn cũng phải biết đường dẫn của trang. Vì vậy, bạn chỉ cần liên kết với nó bằng tay:

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

Hoặc bạn có thể làm một cái gì đó lớn và xấu như thế này nếu bạn muốn lập trình lấy tiêu đề của trang:

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

14

Nếu nội dung bên trong cùng một trang thì có thể liên kết với nó bằng auto_idstính năng này. Bạn kích hoạt tính năng này trong _config.yml:

kramdown:
    auto_ids: true

Với tính năng này, mỗi tiêu đề sẽ có một tham chiếu iddựa trên văn bản tiêu đề. Ví dụ

### My Funky Heading

sẽ trở thành

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

Bạn có thể liên kết đến điều này từ trong cùng một tài liệu bằng cách thực hiện một cái gì đó như thế này:

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

Bạn có thể chỉ định một id rõ ràng nếu bạn thích:

### My Funky Heading
{: #funky }

và liên kết với nó

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

Điều đó hoạt động ngay cả khi bạn muốn tham chiếu các yếu tố khác ngoài tiêu đề.
Antonio Vinicius Menezes Medei

1
Điều này thật đúng với gì mà tôi đã tìm kiếm. Cảm ơn!
Wimateeka

Thật là một giải pháp tao nhã!
Robur_131

Điều này cũng có thể được mở rộng cho các liên kết trong các trang khác. ví dụ: [văn bản] (/ path / to / file / # funky)
Robur_131

8

Có nhiều cách liên kết trong Jekyll, một số trong đó hiện đã lỗi thời.

Với các thẻ liên kết

Cách được đề xuất để liên kết đến các tệp nội bộ là

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

Lưu ý rằng điều này sẽ gây ra lỗi nếu tệp di chuyển hoặc bị xóa.

Với permalinks

Để liên kết đến một trang mà không gây ra lỗi (thay vào đó là các liên kết bị hỏng):

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

Lưu ý rằng ở đây bạn cần biết permalink của trang và chuyển qua relative_urlbộ lọc để đảm bảo rằng nó được thêm tiền tố với url cơ sở của trang web.

Permalink của một trang phụ thuộc vào permalinkcài đặt trong tệp cấu hình của bạn và permalinkkhóa trong vấn đề chính của tệp.

Với liên kết jekyll-tương đối

Nếu bạn muốn sử dụng các đường dẫn tương đối (và muốn các liên kết hoạt động trong chế độ xem đánh dấu của GitHub), bạn nên sử dụng jekyll-relative-links. Điều này cho phép bạn viết các liên kết như:

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

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

0

Hãy tưởng tượng đây là thư mục dự án của bạn:

thư mục dự án

Để liên kết "index.md" với một tệp trong thư mục "blog" có tên "20190920-post1.md", hãy làm như sau:

  1. Mở tệp "index.md".
  2. Thêm những điều sau:

    [bất kỳ văn bản] (./ đường dẫn tương đối)

Ví dụ:

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

Đầu ra:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.