ฉันจะไม่ใช้โพสต์เพื่อจุดประสงค์นี้ (ตามที่ yaitloutou แนะนำ) ฉันจะอ่านลำดับชั้นจากโครงสร้างไดเร็กทอรี (โซลูชัน 1) หรือสร้างคอลเลกชันแยกกันสองชุด (โซลูชัน 2) คุณสามารถปล่อยให้คอลเลกชันจากโซลูชัน 2 แบ่งปันเค้าโครงเดียวกันได้ถ้าคุณต้องการ
1. การใช้เพจ
สร้างโครงสร้างไดเร็กทอรีด้วยเพจ index.md และวนซ้ำ Jekyll veriable ที่เรียกว่า 'site.pages' เพื่อสร้างเมนู
index.md
topic-a/index.md
content-1/index.md
content-2/index.md
content-3/index.md
topic-b/index.md
content-1/index.md
content-2/index.md
content-3/index.md
และวนซ้ำทุกหน้าดังนี้:
<ul>
{% assign sitepages = site.pages | sort: 'order' %}
{% for sitepage in sitepages %}
<li {% if page.url == sitepage.url %} class="active"{% endif %}>
<a href="/th{{ sitepage.url }}">{{ sitepage.title }}</a>
</li>
{% endfor %}
</ul>
หากคุณต้องการโครงสร้างแบบซ้อน คุณสามารถทำบางสิ่งเช่นนี้. หรือถ้าคุณต้องการเฉพาะผลลัพธ์สำหรับหัวข้อ A คุณก็สามารถทำได้:
<ul>
{% assign sitepages = site.pages | sort: 'order' %}
{% for sitepage in sitepages %}
{% if sitepage.url contains 'topic-a' %}
<li {% if page.url == sitepage.url %} class="active"{% endif %}>
<a href="/th{{ sitepage.url }}">{{ sitepage.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
2. การใช้คอลเลกชัน (โซลูชันที่ง่ายที่สุดและการสร้างที่เร็วที่สุด)
สร้างคอลเลกชันหัวข้อ A และสร้างคอลเลกชันอื่นหัวข้อ B ไฟล์กำหนดค่าของคุณควรมีลักษณะดังนี้:
collections:
topic-a:
output: true
permalink: /topic-a/:path/
topic-b:
output: true
permalink: /topic-b/:path/
การส่งออกรายการของหัวข้อหนึ่งจะเป็นดังนี้:
{% assign atopics = site.topic-a | sort: 'order' %}
{% for atopic in atopics %}
<li {% if page.url == atopic.url %} class="active"{% endif %}>
<a href="/th{{ atopic.url }}">{{ atopic.title }}</a>
</li>
{% endfor %}
</ul>
คุณควรสร้างไดเร็กทอรี _topic-a และ _topic-b พร้อมด้วยไฟล์ content-1.md, content-2.md ฯลฯ
โปรดทราบว่าโซลูชันทั้งสองมีตัวแปร YML ที่เรียกว่า 'ลำดับ' เพื่อกำหนดลำดับการปรากฏของรายการ/เพจ ดูเหมือนว่านี้:
---
title: mytitle
layout: mylayout
order: 50
---
mycontent
person
JoostS
schedule
19.01.2017