11ty แสดงผลโพสต์เดียวต่อไฟล์ข้อมูล

ฉันต้องการให้ 11ty สร้างหน้าเดียวต่อไฟล์ข้อมูล แทนที่จะสร้างหลายไฟล์โดยการวนซ้ำข้อมูลภายในไฟล์ข้อมูล เป็นไปได้ไหม?

กรณีการใช้งานของฉันคือฉันมีคำอธิบายงานหลายรายการในรูปแบบ yaml: หนึ่งหน้า yaml ต่องาน ฉันต้องการสร้างหน้าสำหรับไฟล์ข้อมูลแต่ละไฟล์

ฉันรู้ว่าฉันสามารถใส่ข้อมูล yaml ทั้งหมดไว้เป็นส่วนหน้าในหน้าที่ไม่มีเนื้อหาได้ แต่รู้สึกผิดเพราะฉันมีเพียงข้อมูลเท่านั้น

ขอบคุณสำหรับคำแนะนำใด ๆ


person pat    schedule 02.08.2020    source แหล่งที่มา


คำตอบ (1)


ได้ คุณสามารถใช้ คอลเลกชัน รวมกับ การแบ่งหน้า เพื่อสร้างไฟล์เอาต์พุตหนึ่งไฟล์ต่องาน สิ่งสำคัญคือการใช้ขนาดการแบ่งหน้าเป็น 1 ด้วยวิธีนี้ คุณจึงต้องการเพียงหน้าเดียวในไดเร็กทอรีไซต์ของคุณ และจะสร้างหนึ่งหน้าเอาต์พุตต่องาน ซึ่งมีบันทึกไว้ใน สร้างเพจจากข้อมูล

ตัวอย่างในบทความเอกสารประกอบที่เชื่อมโยงใช้ไฟล์ข้อมูลหนึ่งไฟล์ (possums.json) และแบ่งหน้าเหนือออบเจ็กต์ที่สิบเอ็ดสร้างขึ้นสำหรับไฟล์นั้น หากคุณมีไฟล์ข้อมูลหนึ่งไฟล์ต่อองค์ประกอบ (งาน ในกรณีของคุณ) คุณสามารถบรรลุสิ่งเดียวกันได้โดยการวางไฟล์ข้อมูลเหล่านั้นทั้งหมดไว้ในไดเร็กทอรีหลักภายในไดเร็กทอรี _data และทำซ้ำอีกครั้ง สิ่งสำคัญคือการทำความเข้าใจวิธีที่ eleventy จัดการ ไดเรกทอรีที่ซ้อนกันในไดเรกทอรีข้อมูลส่วนกลาง และคุณสามารถใช้การแบ่งหน้ากับออบเจ็กต์ได้

ดังนั้นหากคุณมีไฟล์งาน yaml ที่มีโครงสร้างดังนี้:

  • _data/jobs/job1.yaml
  • _data/jobs/job2.yaml
  • _data/jobs/job3.yaml

คุณควรจะสามารถแบ่งหน้าได้เช่นนี้ (ดัดแปลงมาจากตัวอย่างในเอกสารประกอบ อาจต้องปรับเปลี่ยนเล็กน้อยเพื่อให้ใช้ได้กับเนื้อหาของคุณ):

pagination:
    data: jobs
    size: 1
    alias: job
    resolve: values
permalink: "jobs/{{ job.name | slug }}/"
person MoritzLost    schedule 03.08.2020
comment
ขอบคุณ @MoritzLost ดังนั้นฉันจึงต้องการใช้เทมเพลตเดียวสำหรับไฟล์ข้อมูลหลายไฟล์ ฉันคิดว่าคอลเลกชันและการแบ่งหน้ามีไว้สำหรับการใช้เทมเพลตเดียวสำหรับไฟล์ข้อมูลเดียว ดังนั้นหากฉันมีไฟล์ข้อมูล: jd1,yaml, jd2.yaml, jd3.yaml หากต้องการใช้การแบ่งหน้า ฉันเชื่อว่าฉันต้องการเทมเพลตต่อไฟล์ yaml ฉันต้องการใช้ไฟล์เทมเพลตเพียงไฟล์เดียวเท่านั้น คุณช่วยยกตัวอย่างโค้ดว่าคุณคิดว่ามันจะทำงานอย่างไร? ฉันอ้างถึงเอกสารแล้ว แต่ฉันไม่เห็นว่าเป็นอย่างไร - person pat; 04.08.2020
comment
@pat ฉันได้เพิ่มตัวอย่าง สิ่งสำคัญคือการใส่ไฟล์ข้อมูลงานทั้งหมดของคุณไว้ในไดเร็กทอรีย่อย และใช้ชื่อของไดเร็กทอรีย่อยสำหรับการแบ่งหน้า ไม่แน่ใจว่าตัวอย่างจะใช้งานได้นอกกรอบหรือไม่ (ทดสอบไม่ได้ในขณะนี้) แต่หากคุณอ่านหน้าเอกสารเพิ่มเติมอีกสองหน้าที่ฉันลิงก์ไว้ด้านบน คุณก็ควรจะทำให้มันใช้งานได้ด้วยไฟล์เทมเพลตเดียว - person MoritzLost; 04.08.2020
comment
เฮ้นั่นได้ผลครั้งแรก เรียบง่ายจริงๆ ขอบคุณมากครับที่อธิบายให้ละเอียดยิ่งขึ้น - person pat; 05.08.2020
comment
ธีม vredeburg ยังใช้เคล็ดลับนี้ในการแบ่งหน้าหมวดหมู่ คุณสามารถตรวจสอบตัวอย่างการทำงานได้ที่นั่น - person baHI; 13.03.2021
comment
resolve: valuesคือชิ้นส่วนที่ฉันขาดหายไป ขอบคุณ! - person Zach Saucier; 08.04.2021