jekyll markdown ลิงก์ภายใน


143

Jekyll ใช้ลิงค์ที่มีการจัดรูปแบบมาร์กอัป แต่ฉันจะลิงก์ไปยังเนื้อหาภายในได้อย่างไร

[[link]] 

คำตอบ:


249

ตอนนี้คุณสามารถโพสต์ลิงก์ภายในโดยใช้สิ่งต่อไปนี้:

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

นี้จะอ้างอิงในเอกสาร Jekyll

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


17
ความคิดใด ๆ วิธีการเชื่อมโยงภายในไปยังหน้า?
Dogweather

1
ดูเหมือนว่าเป็นไปไม่ได้ที่จะเชื่อมโยงไปยังหน้า PR นี้ถูกปิดโดยไม่ถูกรวม: github.com/jekyll/jekyll/pull/369
northben

1
เป็นไปได้หรือไม่ที่จะให้หัวเรื่องแสดงง่าย ๆ เช่น render [Title of post](/correct/permalink)ด้วยคำสั่งเดียว? ฉันสามารถทำได้ด้วยการกรองซึ่ง verbose เกินไป
Ciro Santilli 郝海东冠状病六四事件法轮功

หากคุณมีส่วนย่อย: [ข้อความของลิงก์] ({% post_url / dirname / 2010-07-21-post%})
alexsalo

หนึ่งผิดพลาดเล็ก ๆ : Jekyll เอกสาร มันpost-urlไม่ได้post_url
ฮัน Qiu

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

โปรดดูเอกสาร Jekyll


2
ฉันยังพบหน้าเอกสารนี้มีประโยชน์ - jekyllrb.com/docs/liquid/tags/#link
David Douglas

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 อีกต่อไป แต่หน้ายังคงติดอยู่ที่ 3.x ในฐานะรุ่นสูงสุด AFAIK
Henry Schreiner

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)

คุณสามารถกำหนด ID ที่ชัดเจนได้หากคุณต้องการ:

### My Funky Heading
{: #funky }

และลิงก์ไปยังมัน

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

สิ่งนี้ใช้ได้แม้ว่าคุณต้องการอ้างอิงองค์ประกอบอื่นนอกเหนือจากชื่อเรื่อง
Antonio Vinicius Menezes Medei

1
นี่คือสิ่งที่ฉันกำลังมองหา ขอบคุณ!
Wimateeka

ช่างเป็นทางออกที่สง่างาม!
Robur_131

สิ่งนี้สามารถขยายได้สำหรับลิงก์ในหน้าอื่น ๆ เช่น: [text] (/ path / to / file / # funky)
Robur_131

8

มีหลายวิธีในการเชื่อมโยงใน Jekyll ซึ่งบางวิธีก็ล้าสมัยแล้ว

พร้อมลิงค์แท็ก

วิธีที่แนะนำในการลิงก์ไปยังไฟล์ภายในคือ

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

โปรดทราบว่านี่จะทำให้เกิดข้อผิดพลาดหากไฟล์ย้ายหรือถูกลบ

ด้วย Permalinks

วิธีเชื่อมโยงไปยังหน้าโดยไม่ทำให้เกิดข้อผิดพลาด (ลิงค์เสีย)

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

โปรดทราบว่าที่นี่คุณจำเป็นต้องทราบลิงก์ของหน้าและส่งผ่านrelative_urlตัวกรองเพื่อให้แน่ใจว่ามีการเติมคำนำหน้าด้วย url พื้นฐานของเว็บไซต์

ลิงก์ถาวรของหน้าขึ้นอยู่กับการpermalinkตั้งค่าในไฟล์กำหนดค่าของคุณและpermalinkปุ่มที่อยู่ด้านหน้าของไฟล์

ด้วยการเชื่อมโยง jekyll- ญาติ

หากคุณต้องการที่จะใช้เส้นทางญาติ (และต้องการเชื่อมโยงไปยังการทำงานในมุมมองของ markdown GitHub) jekyll-relative-linksคุณควรใช้ วิธีนี้ช่วยให้คุณสามารถเขียนลิงก์เช่น:

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

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

0

ลองนึกภาพนี่เป็นไดเรกทอรีโครงการของคุณ:

ไดเรกทอรีโครงการ

หากต้องการลิงก์ "index.md" ไปยังไฟล์ที่อยู่ในโฟลเดอร์ "บล็อก" ชื่อ "20190920-post1.md" ให้ทำดังต่อไปนี้:

  1. เปิดไฟล์ "index.md"
  2. เพิ่มรายการต่อไปนี้:

    [ข้อความใด ๆ ] (./ เส้นทางสัมพัทธ์)

ตัวอย่างเช่น:

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

เอาท์พุท:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.