ข้ามไปยังเนื้อหา
Dee Wan 1.0 ยังอยู่ระหว่างพัฒนาและยังไม่เปิดตัว (pre-MVP) — ดู ขอบเขตผลิตภัณฑ์ 1.0

เว็บไซต์บล็อก

เว็บไซต์ถูกสร้างเป็น เว็บไซต์ หรือ บล็อก เลือกได้ครั้งเดียวตอนสร้างเว็บไซต์ และเปลี่ยนภายหลังไม่ได้

  • เว็บไซต์: เน้นหน้าเป็นหลัก เพิ่มโมเดลเนื้อหาของคุณเองใน ตัวสร้างเนื้อหา เมื่อต้องการ
  • บล็อก: เน้นโพสต์เป็นหลัก Dee Wan จะเพิ่มโมเดล Post ขนาดเล็กหนึ่งโมเดล และแสดง โพสต์ ในเมนูนำทางหลัก

เว็บไซต์ที่สร้างก่อนมีตัวเลือกนี้เป็น เว็บไซต์

หลังจากสร้างระเบียนเว็บไซต์แล้ว Dee Wan จะรันการตั้งค่า บล็อก การตั้งค่าจะเพิ่มโมเดลเนื้อหาธรรมดาหนึ่งโมเดล:

ฟิลด์ ชนิด บังคับ ภาษา
title ข้อความ ใช่ แยกตามภาษา
cover สื่อ ไม่ แยกตามภาษา
body ข้อความจัดรูปแบบ ใช่ แยกตามภาษา
publication_date วันที่ ไม่ ใช้ร่วมกันทุกภาษา

โมเดลคือ Post (slug post) แปลได้หลายภาษา โดยมี title เป็นฟิลด์แสดงผล การตั้งค่าไม่เพิ่มคอมโพเนนต์ หมวดหมู่ คีย์เวิร์ด หรือโมเดลอื่น หมวดหมู่ แท็ก และผู้เขียนที่ให้เครดิตเป็นส่วนเสริมที่ไม่บังคับ: ดู หมวดหมู่ แท็ก และผู้เขียน

ที่อยู่ ของโพสต์คือที่อยู่เนื้อหาตามปกติ (slug ของโพสต์) publication_date เป็นวันที่ที่คุณแสดงให้ผู้อ่านเห็น ไม่ได้เผยแพร่อะไร

โพสต์ใช้วงจรชีวิตเนื้อหาตามปกติ: ตัวแก้ไข การตรวจสอบความถูกต้อง เวอร์ชัน เวิร์กโฟลว์ การตรวจทาน การเผยแพร่ การยกเลิกการเผยแพร่ ประวัติ และสิทธิ์ เหมือนกับโมเดลอื่นทุกโมเดล โพสต์จะเป็นสาธารณะเมื่อเผยแพร่แล้วเท่านั้น ฉบับร่างไม่เคยปรากฏบน บล็อก สาธารณะหรือใน «โพสต์ล่าสุด»

การเผยแพร่โพสต์ไม่ได้สร้างเว็บไซต์ใหม่ หน้า บล็อก จะอ่านโพสต์ที่เผยแพร่แล้วเมื่อมีการร้องขอ

บนเว็บไซต์ บล็อก แถบด้านข้างเป็นดังนี้:

  • หลัก: แดชบอร์ด, โพสต์, หน้า และ ตัววางแผน สำหรับคนที่ใช้การเขียนด้วย AI ได้ (ai:generate)
  • ขั้นสูง: เนื้อหา และ ตัวสร้างเนื้อหา สำหรับคนที่อ่านโมเดลได้
  • การกำหนดค่า: การตั้งค่า และ การติดตั้ง สำหรับผู้ดูแลระดับสูงสุด (superadmin)

รายการที่บทบาทของคุณใช้ไม่ได้จะไม่แสดง และกลุ่มที่ไม่มีรายการใดจะถูกละไว้

การนำทางของ เว็บไซต์ ไม่เปลี่ยน

โพสต์ เป็นมุมมองของโมเดล post ในรายการเนื้อหาปกติ: การค้นหา ตัวกรองเวิร์กโฟลว์ ภาพปก ชื่อเรื่อง ที่อยู่ วันที่เผยแพร่ สถานะ และการกระทำของแถวตามปกติ สร้างโพสต์ และการเปิดโพสต์ใช้ตัวแก้ไขเนื้อหาปกติ breadcrumb และ ยกเลิก ของตัวแก้ไขจะกลับไปที่ โพสต์

เนื้อหา และ ตัวสร้างเนื้อหา ยังแสดงทุกโมเดล รวมถึง post

ที่อยู่ แสดง
/blog โพสต์ที่เผยแพร่แล้ว หน้าละ 12 โพสต์
/blog?page=2 12 โพสต์ถัดไป และต่อไปเรื่อย ๆ
/blog/<post-slug> โพสต์ที่เผยแพร่แล้วหนึ่งโพสต์: ชื่อเรื่อง ภาพปก วันที่เผยแพร่ เนื้อหา
/blog/category/<slug> โพสต์ที่เผยแพร่แล้วในหมวดหมู่หนึ่ง หน้าละ 12 โพสต์
/blog/tag/<slug> โพสต์ที่เผยแพร่แล้วที่มีแท็กหนึ่ง หน้าละ 12 โพสต์
/blog/author/<slug> โพสต์ที่เผยแพร่แล้วที่ให้เครดิตบุคคลหนึ่ง หน้าละ 12 โพสต์

นอกภาษาเริ่มต้น ที่อยู่เดียวกันจะขึ้นต้นด้วยรหัสภาษา เช่น /th/blog ตามการกำหนดเส้นทางภาษาและนโยบายภาษาสำรองที่เว็บไซต์มีอยู่ โพสต์ตอบที่ slug ของตนเองในแต่ละภาษา: /th/blog/<thai-post-slug>

  • โพสต์เรียงจาก publication_date ใหม่สุดก่อน โพสต์ที่ไม่มีวันที่อยู่ท้ายสุด
  • page ต้องเป็นจำนวนเต็มบวก หน้าที่เกินท้ายรายการจะตอบ 404
  • บล็อก ที่ไม่มีโพสต์ที่เผยแพร่จะแสดงหน้า บล็อก ว่าง ไม่ใช่ 404
  • โพสต์ที่ไม่มีอยู่ เป็นฉบับร่าง ยกเลิกการเผยแพร่แล้ว หรืออยู่ในภาษาที่ไม่มีให้ จะตอบ 404

บนเว็บไซต์ บล็อก หน้า เส้นทางของ Site Chrome หรือการเปลี่ยนเส้นทาง ใช้ /blog หรือสิ่งใดที่อยู่ใต้ /blog ไม่ได้ ความขัดแย้งแบบนี้จะบล็อกการเรนเดอร์ด้วย blog_route_conflict จนกว่าคุณจะเปลี่ยนที่อยู่หนึ่งในนั้น มีข้อยกเว้นหนึ่งข้อ: การเปลี่ยนเส้นทางเริ่มที่ที่อยู่ของโพสต์เอง (/blog/<post-slug>) ที่ไม่มีโพสต์ที่เผยแพร่ใดใช้อยู่ได้ เพื่อให้โพสต์ที่เผยแพร่ภายใต้ที่อยู่ใหม่ยังทำให้ลิงก์เดิมใช้งานได้ การตั้งค่า การค้นหาและการแชร์ ของโพสต์มีผลกับหน้าของโพสต์นั้น

แต่ละภาษาของ บล็อก มีฟีด RSS 2.0 ของโพสต์ที่เผยแพร่ใหม่ที่สุด 20 โพสต์:

ที่อยู่ ฟีด
/rss.xml โพสต์ในภาษาเริ่มต้นของเว็บไซต์
/<code>/rss.xml โพสต์ในภาษาอื่น /th/rss.xml

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

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

ความคิดเห็นใหม่จะรอ ไม่มีอะไรแสดงจนกว่าคุณจะอนุมัติ แต่ละความคิดเห็นอยู่ในสถานะ รอตรวจ, อนุมัติแล้ว, สแปม หรือ ปฏิเสธแล้ว อนุมัติ ปฏิเสธ หรือทำเครื่องหมายเป็นสแปมได้ทีละความคิดเห็น หรือเลือกได้สูงสุด 25 รายการพร้อมกัน ลบถาวร ลบความคิดเห็นและการตอบกลับของความคิดเห็นนั้น

การดำเนินการ สิทธิ์
อ่านและตรวจกลั่นกรอง content:publish
ลบถาวร content:publish และสิทธิ์ลบใน post
เปิดหรือปิดความคิดเห็น site:settings ใน โพสต์ → ความคิดเห็น หรือ model:apply สำหรับสวิตช์ ความคิดเห็นจากผู้เยี่ยมชม ของโมเดลใน ตัวสร้างเนื้อหา
ทำเครื่องหมาย Helpful ในนามตนเอง สิทธิ์อ่านใน post

ทุกการกระทำส่งสถานะที่คุณเห็นไปด้วย ความคิดเห็นที่คนอื่นย้ายสถานะไปในระหว่างนั้นจะคงไว้ตามเดิม และรายการจะถูกอ่านใหม่ การตรวจกลั่นกรองไม่เคยส่งการแจ้งเตือน

  • ความคิดเห็นเป็นของโพสต์และหนึ่งภาษา ไม่ใช่ของที่อยู่ การเปลี่ยนชื่อโพสต์ยังคงความคิดเห็นไว้ แต่ละภาษามีเธรดของตนเอง
  • การตอบกลับมีระดับเดียว การตอบกลับตอบความคิดเห็นระดับบนสุดที่อนุมัติแล้วของโพสต์และภาษาเดียวกัน
  • ผู้เยี่ยมชมและสมาชิกทีมทำเครื่องหมายความคิดเห็นที่อนุมัติแล้วว่า Helpful ได้คนละครั้ง จำนวนจะแสดงที่ความคิดเห็น และ Most helpful เรียงความคิดเห็นตามจำนวนนั้น ไม่เคยแสดงว่าใครเป็นผู้ทำเครื่องหมาย
  • การยกเลิกการเผยแพร่โพสต์หรือย้ายไปถังขยะจะซ่อนความคิดเห็นของโพสต์ การเผยแพร่อีกครั้งจะแสดงความคิดเห็นอีกครั้ง
  • ลบถาวร ในถังขยะจะลบความคิดเห็นของโพสต์ด้วย การลบอัตโนมัติหลังพ้นระยะเก็บในถังขยะก็เช่นกัน คำถามยืนยันจะบอกจำนวน
  • ความคิดเห็นเก็บชื่อที่แสดง เว็บไซต์ที่ไม่บังคับ อีเมลที่ไม่บังคับ ข้อความ ความยินยอม เวลา และสถานะ อีเมลเป็นข้อมูลส่วนตัว: ไม่มีการอ่านสาธารณะ หน้า หรือแคชใดมีอีเมล Dee Wan ไม่เคยส่งอีเมลถึงผู้เยี่ยมชม ความคิดเห็นที่ไม่มีอีเมลจะแสดง ไม่ได้ระบุ ในรายละเอียด
  • แบบฟอร์มขอชื่อ ความคิดเห็น และความยินยอม เว็บไซต์และอีเมลไม่บังคับ และจะถูกตรวจเฉพาะเมื่อกรอก ความยินยอมครอบคลุมเฉพาะสิ่งที่ผู้เยี่ยมชมกรอก
  • ความคิดเห็นที่นำเข้ามาโดยไม่มีความยินยอม เช่น จากไฟล์ส่งออกของ WordPress จะแสดง ไม่มีความยินยอม แหล่งที่มาไม่เคยบันทึกว่าบุคคลนั้นยอมรับแบบฟอร์มความคิดเห็นของเว็บไซต์นี้ และไม่มีสิ่งใดใน Dee Wan เปลี่ยนข้อเท็จจริงนั้น ความคิดเห็นจะเข้ามาในสถานะรอ และผู้เยี่ยมชมจะไม่เห็น เผยแพร่ความคิดเห็นที่นำเข้า… แสดงความคิดเห็นนั้นต่อผู้เยี่ยมชมหลังจากคุณยืนยันในกล่องโต้ตอบ นั่นเป็นการตัดสินใจของคุณที่จะเผยแพร่ซ้ำ ไม่ได้บันทึกความยินยอม และความคิดเห็นยังคงเป็น ไม่มีความยินยอม การตั้งค่า → ประวัติ บันทึกว่าใครเผยแพร่และเมื่อไร แต่ไม่บันทึกข้อความ การอนุมัติแบบเลือกหลายรายการจะข้ามความคิดเห็นเหล่านี้และบอกว่ามีกี่รายการที่ต้องตรวจทีละรายการ ปฏิเสธ, ทำเครื่องหมายว่าสแปม และ ลบถาวร ยังใช้ได้ การย้ายความคิดเห็นที่นำเข้าซึ่งเผยแพร่แล้วออกจากสถานะ อนุมัติแล้ว จะซ่อนอีกครั้ง การแสดงอีกครั้งต้องใช้ เผยแพร่ความคิดเห็นที่นำเข้า… อีกครั้ง
ข้อจำกัด ค่า
ชื่อ 80 อักขระ
เว็บไซต์ 200 อักขระ https:// หรือ http://
อีเมล 254 อักขระ ไม่บังคับ
ความคิดเห็น 4,000 อักขระ
ความคิดเห็นต่อไคลเอนต์และเว็บไซต์ 10 ครั้งทุก 10 นาที แยกจากแบบฟอร์ม
reaction ต่อไคลเอนต์และเว็บไซต์ 60 ครั้งทุก 10 นาที แยกจากความคิดเห็น
การตอบกลับที่แสดงใต้เธรดเดียว 20
จำนวนที่แสดง สูงสุด 999 จากนั้น 999+

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

หน้าโพสต์แสดงความคิดเห็นที่อนุมัติแล้ว หน้าละ 20 เธรด (?comments_page=2) และแบบฟอร์ม ผู้เยี่ยมชมเรียงได้แบบ Oldest (ค่าเริ่มต้น) Newest หรือ Most helpful (?comments_order=) และทุกความคิดเห็นมีปุ่ม Helpful แบบฟอร์มทำงานได้โดยไม่ต้องใช้ JavaScript: ส่งไปที่ /v1/interactions/comment.submit บนโฮสต์ของเว็บไซต์เอง แล้วกลับมาที่โพสต์พร้อมผลลัพธ์ Helpful ส่งไปที่ /v1/interactions/comment.react ในแบบเดียวกัน เว็บไซต์ที่สร้างขึ้นยังส่งในที่เดิม และแสดงสถานะกำลังทำงาน ข้อผิดพลาด ส่งซ้ำ เกินขีดจำกัด และสำเร็จ โดยไม่ออกจากหน้า หน้าพรีวิวไม่รับความคิดเห็น เส้นทางรับข้อมูล <host>/v1/interactions/* ต้องไปถึง Worker รับข้อมูล เช่นเดียวกับแบบฟอร์มของเว็บไซต์ ตัวเรนเดอร์อ่านความคิดเห็นจาก GET /v1/_comments ดู API สาธารณะ

สำเนาเว็บไซต์และการโอนประวัติเว็บไซต์จะนำความคิดเห็นของทุกโพสต์ที่ส่งออกไปใน comments.jsonl พร้อมสถานะ อีเมลส่วนตัว (หรือ null เมื่อไม่ได้ให้ไว้) และจำนวน reaction ข้อมูลว่าใครเป็นผู้ทำ reaction ไม่ถูกนำไปด้วย การนำเข้าจะสร้างความคิดเห็นขึ้นใหม่บนโพสต์ที่การนำเข้านั้นสร้าง โดยการตอบกลับอยู่ใต้เธรดของตนเอง การนำเข้าสำเนาเดิมซ้ำไม่เคยทำให้ซ้ำ และการเลิกทำการนำเข้าจะลบความคิดเห็นเหล่านั้น ความคิดเห็นที่ไม่มีความยินยอมจะเข้ามาในสถานะรอเสมอ แม้จะเผยแพร่แล้วบนเว็บไซต์ต้นทาง: เผยแพร่อีกครั้งบนเว็บไซต์นี้ถ้าต้องการให้แสดง การส่งออกเป็นสเปรดชีตไม่รวมความคิดเห็น การนำเข้าจาก WordPress นำความคิดเห็นของผู้อ่านเข้ามาโดยรอการตรวจกลั่นกรองและไม่มีความยินยอม ดู นำเข้าจาก WordPress การนำเข้าจาก Strapi ไม่เคยสร้างความคิดเห็น ข้อมูลสำรองของฐานข้อมูลรวมความคิดเห็นเช่นเดียวกับข้อมูลเว็บไซต์ทั้งหมด

ส่วนเสริมที่ไม่บังคับสำหรับ บล็อก ที่พร้อมแล้ว เปิด โพสต์ กด ⋯ แล้ว เพิ่มหมวดหมู่ แท็ก และผู้เขียน แล้ว เพิ่ม คุณต้องมีสิทธิ์เปลี่ยนโมเดล (model:apply) รายการเมนูจะแสดงขณะที่โมเดล post ยังขาดฟิลด์ใดฟิลด์หนึ่งในสามฟิลด์ด้านล่าง

ส่วนเสริมนี้เพิ่มเฉพาะโมเดลและฟิลด์ธรรมดา ไม่มีอย่างอื่น:

โมเดล Slug ฟิลด์
Category category name (ข้อความ บังคับ แยกตามภาษา), parent (หมวดหมู่อื่นหนึ่งหมวดหมู่ ไม่บังคับ)
Tag tag name (ข้อความ บังคับ แยกตามภาษา)
Person person name (ข้อความ บังคับ แยกตามภาษา), bio (ข้อความสั้น แยกตามภาษา), photo (สื่อ แยกตามภาษา)

และฟิลด์ความสัมพันธ์แบบหลายต่อหลายสามฟิลด์บน post: categories → category, tags → tag และ authors → person ทั้งสามโมเดลเป็นสาธารณะและแสดง name ทั้งสามแปลได้: แต่ละภาษามีชื่อและที่อยู่ของตนเอง ประวัติย่อและรูปภาพของบุคคลก็เป็นของแต่ละภาษาเช่นกัน parent และรายการ authors ของโพสต์ใช้ร่วมกันทุกภาษา

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

การเพิ่มทำซ้ำได้อย่างปลอดภัย ทุกอย่างที่มีอยู่แล้วและเหมือนกันจะถูกคงไว้ ถ้ามีโมเดล category, tag หรือ person อยู่แล้วและต่างกัน หรือ post มีฟิลด์ categories, tags หรือ authors อยู่แล้วและต่างกัน จะไม่มีอะไรถูกเพิ่ม และแผงจะแสดงทุกรายการ โมเดล category, tag หรือ person ที่ไม่ได้แปลจะแสดงว่ามีการตั้งค่าภาษาต่างกัน เปลี่ยนชื่อหรือลบใน ตัวสร้างเนื้อหา แล้วกด ลองอีกครั้ง ทุกโมเดลและฟิลด์จะถูกเพิ่มพร้อมกัน หรือไม่เพิ่มเลย

parent เป็นลิงก์แบบลำดับชั้น การบันทึกที่ทำให้หมวดหมู่เป็นหมวดหมู่หลักของตัวเอง หรือวางไว้ใต้หมวดหมู่ย่อยของตัวเอง จะถูกปฏิเสธ และข้อความจะแสดงที่ฟิลด์ Parent category เวอร์ชันที่กู้คืนต้องเป็นไปตามกฎเดียวกัน ใน ตัวสร้างเนื้อหา นี่คือสวิตช์ ลำดับชั้น (แม่/ลูก) ซึ่งมีให้สำหรับความสัมพันธ์แบบไปหนึ่งรายการที่ชี้ไปยังโมเดลของตัวเอง ดู โมเดลและฟิลด์ API แบบแยกอิสระที่สร้างขึ้นยังคง parent และปฏิเสธการวนซ้ำแบบเดียวกันภายในการเขียนฐานข้อมูลของตน

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

ใช้กฎเนื้อหาตามปกติ รายการที่เผยแพร่อยู่ต้องยกเลิกการเผยแพร่ก่อนจึงย้ายไปถังขยะได้ และการยกเลิกการเผยแพร่จะแสดงโพสต์ที่ลิงก์มายังรายการนั้น ในถังขยะรายการยังคงลิงก์ไว้ และ กู้คืน นำกลับมา ลบถาวร ลบรายการและลิงก์ของรายการนั้นออกจากโพสต์ และคงโพสต์ไว้

หน้าโพสต์แสดง By และผู้เขียนใต้ชื่อเรื่อง และแสดงหมวดหมู่และแท็กหลังเนื้อหา แต่ละชื่อลิงก์ไปยังคลังของตน: /blog/category/<slug>, /blog/tag/<slug> หรือ /blog/author/<slug> โดยมีคำนำหน้าภาษาเมื่ออยู่นอกภาษาเริ่มต้น

  • โพสต์ใช้ชื่อและที่อยู่ที่เผยแพร่ล่าสุดของหมวดหมู่ แท็ก และผู้เขียน เมื่อแก้ไขรายการที่เกี่ยวข้อง ให้เผยแพร่รายการนั้น โดยไม่ต้องบันทึกหรือเผยแพร่โพสต์ใหม่ การแก้ไขฉบับร่างไม่แสดงต่อผู้เยี่ยมชม รายการที่ยกเลิกการเผยแพร่ อยู่ในถังขยะ ลบแล้ว หรือเป็นส่วนตัวจะไม่แสดง
  • แคชสาธารณะอัปเดตตามกฎการล้างและอายุแคชตามปกติ เนื้อหาโพสต์และเวอร์ชันที่บันทึกไว้ไม่เปลี่ยนแปลง
  • ในแต่ละภาษา หมวดหมู่ แท็ก หรือผู้เขียนแสดงชื่อของตนเองและลิงก์ไปยังที่อยู่ของตนเอง ภายใต้นโยบายภาษาแบบเข้มงวด รายการที่ไม่มีภาษานั้นจะไม่แสดงบนโพสต์ ภายใต้ภาษาสำรอง จะแสดงในภาษาที่เว็บไซต์ใช้สำรอง คลังจะแสดงโพสต์ที่แสดงที่อยู่นั้นในภาษาของคลัง ฟีดให้เครดิตผู้เขียนในแบบเดียวกัน
  • คลังแสดงโพสต์ที่เผยแพร่แล้วซึ่งลิงก์โดยตรงกับรายการนั้น เรียงจาก publication_date ใหม่สุดก่อน หน้าละ 12 โพสต์ ไม่รวมโพสต์ในหมวดหมู่ย่อย คลังที่ไม่มีโพสต์ที่เผยแพร่จะตอบ 404
  • บล็อก ที่ไม่มีส่วนเสริมนี้จะตอบ 404 ที่ที่อยู่เหล่านี้

ถ้า post มีฟิลด์ชื่อ categories, tags หรือ authors ที่ไม่ใช่ความสัมพันธ์ไปยัง category, tag หรือ person บล็อก จะยังไม่พร้อมเรนเดอร์ (blog_contract_drift) จนกว่าจะเปลี่ยนกลับ

body ของโพสต์เป็นเอกสารจัดรูปแบบหนึ่งฉบับ เก็บเป็น HTML แบบมาตรฐาน ทุกการบันทึกจะตรวจเอกสาร: มาร์กอัปที่อยู่นอกเอกสารจะถูกปฏิเสธโดยระบุชื่อ (ฟิลด์ ภาษา องค์ประกอบ หรือแอตทริบิวต์) และไม่มีอะไรถูกเขียน หน้าพรีวิวและตัวเรนเดอร์ของ Dee Wan ไม่แทรกค่าที่เก็บไว้โดยไม่ผ่านการประมวลผล: ตัวเรนเดอร์ทั้งสองวาดด้วย renderRichDocument ของข้อกำหนดข้อมูลหน้า

เอกสารมีย่อหน้า หัวข้อ รายการ คำพูดอ้างอิง บล็อกโค้ด เส้นคั่น ตัวหนา ตัวเอียง ขีดเส้นใต้ ขีดฆ่า โค้ดในบรรทัด ตัวห้อยและตัวยก ลิงก์ และรูปภาพ รวมถึง:

  • ตาราง สูงสุด 12 คอลัมน์และ 200 แถว พร้อมคำบรรยาย แถวหัวตาราง และหัวแถวที่ไม่บังคับ ตารางที่กว้างจะเลื่อนภายในกล่องของตนเองบนโทรศัพท์
  • แกลเลอรีรูปภาพ 2 ถึง 24 รูปจากคลัง แต่ละรูปมีคำบรรยายที่ไม่บังคับ
  • บล็อกเสียง วิดีโอ และไฟล์ ที่ระบุไฟล์ในคลังหนึ่งไฟล์ของชนิดนั้น เสียงและวิดีโอเล่นในหน้า พร้อมลิงก์ดาวน์โหลดใต้เครื่องเล่น ไฟล์เป็นลิงก์ที่มีชื่อ ชนิด และขนาด
  • embed ที่สร้างโดยวางลิงก์ https หนึ่งลิงก์: YouTube และ Vimeo มีในตัว และผู้ดูแลอนุญาตต้นทางอื่นได้ (ดูด้านล่าง) บล็อกเก็บรหัสผู้ให้บริการ ที่อยู่ https มาตรฐาน และชื่อเรื่อง ไม่เคยเก็บมาร์กอัป สคริปต์ หรือ CSS
  • บล็อกของปลั๊กอิน ที่ประกาศโดยปลั๊กอินที่ติดตั้ง (ดูด้านล่าง) บล็อกเก็บชนิด เวอร์ชันที่ใช้ตอนบันทึก และค่าของฟิลด์ ไม่เคยเก็บมาร์กอัป สคริปต์ หรือ CSS

ลิงก์เป็นแบบสัมพัทธ์ http, https, mailto หรือ tel ได้ รูปภาพเป็นแบบสัมพัทธ์ http หรือ https ได้ ลิงก์ภายนอกได้รับ rel="noopener noreferrer"

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

ปลั๊กอินที่ใช้งานอยู่ประกาศชนิดบล็อกข้อความจัดรูปแบบในแมนิเฟสต์ได้ (rich_blocks ดู plugins/authoring.md) ตัวแก้ไขแสดงบล็อกเหล่านี้ใต้ บล็อก วาดฟิลด์ด้วยตัวควบคุมของตัวแก้ไขเอง และแสดงตัวอย่างแต่ละบล็อกจากโครงสร้างการเรนเดอร์ที่ปลั๊กอินประกาศ ไม่มีอะไรจากปลั๊กอินทำงานในตัวแก้ไขหรือบนเว็บไซต์

  • รูปแบบที่จัดเก็บ: <figure data-block="plugin" data-type="<plugin id>/<name>" data-version="2" data-values="{...}"> โดยมี <a data-field data-media-id href> ว่างหนึ่งตัวต่อฟิลด์สื่อหนึ่งฟิลด์ ค่าเป็นสตริง ตัวเลข และบูลีนในรูป JSON ที่เรียงลำดับแล้ว ฟิลด์สื่อจะถูกตรึง คัดลอก และแมปใหม่เหมือนสื่อในคลังทั่วไป
  • การบันทึกที่เพิ่มหรือเปลี่ยนบล็อกจะถูกตรวจกับปลั๊กอินที่ใช้งานอยู่ของเว็บไซต์: ชนิดที่ไม่รู้จักถูกปฏิเสธด้วย rich_block_unregistered เวอร์ชันที่ใหม่กว่าที่ประกาศด้วย rich_block_version_unknown และค่าที่ฟิลด์ที่ประกาศไว้ปฏิเสธด้วย rich_block_values_invalid (แต่ละข้อระบุฟิลด์และภาษา) บล็อกที่บันทึกภายใต้เวอร์ชันที่ประกาศซึ่งเก่ากว่าจะยอมรับเมื่อค่าที่ย้ายแล้วผ่าน และเก็บตามที่ส่งมา
  • บล็อกที่มีอยู่แล้วในฟิลด์และภาษาเดียวกันยังบันทึกได้เมื่อปลั๊กอินของบล็อกถูกปิดหรือลบ ตัวแก้ไขแสดงว่าถูกเก็บไว้และไม่แสดงบนเว็บไซต์ การนำเข้าและสำเนาเว็บไซต์นำบล็อกพร้อมเวอร์ชันไปด้วย ไม่ว่าปลายทางจะติดตั้งอะไรไว้
  • บล็อกเก่าจะย้ายไปเวอร์ชันปัจจุบันก็ต่อเมื่อผู้เขียนขอ: เปิดฟอร์มของบล็อก หรือ อัปเดต บนบล็อก หรือ บล็อก → อัปเดตบล็อก ({count}) เนื้อหาที่เผยแพร่แล้วไม่เคยถูกเขียนใหม่ทั้งหมดในครั้งเดียว
  • ตัวเรนเดอร์อ่านคำจำกัดความจาก GET /v1/_rich-blocks เฉพาะสำหรับหน้าที่มีบล็อกของปลั๊กอิน และวาดแต่ละบล็อกด้วยอะแดปเตอร์ของโฮสต์: รายการองค์ประกอบตายตัว ทุกค่าถูก escape ทุกที่อยู่ถูกตรวจ เมื่อไม่มีอะแดปเตอร์ใดวาดบล็อกได้ (ปลั๊กอินไม่ทำงาน ไม่มีโครงสร้างการเรนเดอร์ หรือเวอร์ชันใหม่กว่าคำจำกัดความ) หน้าสาธารณะจะไม่แสดงอะไรแทนบล็อกนั้น และหน้าพรีวิวจะแสดงกรอบแทนบล็อกพร้อมชื่อบล็อก
  • ข้อความสำหรับค้นหา ข้อความตัดตอนในผลค้นหา และบทสรุปในฟีด รวมค่า text และ textarea ของบล็อก และป้ายกำกับของค่า select โดยอ่านผ่านคำจำกัดความของปลั๊กอินที่ใช้งานอยู่ตอนบันทึก บล็อกที่ไม่มีคำจำกัดความที่ใช้งานอยู่ไม่เพิ่มคำใด ฟิลด์ส่วนตัวไม่เพิ่มคำไม่ว่ากรณีใด
  • Snippet ใช้กฎการบันทึกเดียวกัน: snippet ที่เพิ่มหรือเปลี่ยนบล็อกของปลั๊กอินจะถูกตรวจกับปลั๊กอินที่ใช้งานอยู่ บล็อกที่ไม่เปลี่ยนจะคงไว้
  • ตัวแก้ไขแสดงใต้ฟิลด์ว่ามีบล็อกใดบ้างที่เว็บไซต์จะไม่แสดง และเพราะอะไร (ปลั๊กอินไม่ได้ติดตั้ง ปลั๊กอินถูกปิด เวอร์ชันใหม่กว่า ไม่มีเลย์เอาต์) แต่ละรายการเลือกบล็อกของตน
  • เว็บไซต์แบบจัดการและเว็บไซต์ที่สร้างขึ้นอ่านคำจำกัดความแบบสด แทนการอ่านจากข้อมูลที่ใช้สร้าง: โพสต์และรายการของ บล็อก ก็อ่านแบบสดเช่นกัน สำเนาคำจำกัดความที่ตรึงไว้จึงจะล้าสมัยทันทีที่ติดตั้ง อัปเกรด หรือปิดปลั๊กอิน สรุปของพื้นที่ที่ตรึงไว้ในเว็บไซต์ที่สร้างขึ้นตอนบิลด์จะไม่แสดงอะไรสำหรับบล็อกของปลั๊กอิน

การตั้งค่า → การเชื่อมต่อ → การฝัง แสดงเครื่องเล่น YouTube และ Vimeo ในตัว และต้นทางที่เว็บไซต์นี้ใส่ในเฟรมได้ เฉพาะคนที่มี site:infra เท่านั้นที่เห็นหน้าจอนี้และเปลี่ยนรายการได้ ตัวแก้ไขอ่านรายการนี้ให้สมาชิกทุกคนของเว็บไซต์ ทุกคนที่แก้ไขโพสต์ได้จึงวางลิงก์ที่อนุญาตได้

  • ต้นทางคือ https:// และโฮสต์ที่ระบุแน่นอนหนึ่งโฮสต์ พร้อมพอร์ตที่ไม่บังคับ ไม่มีพาธ query fragment รหัสผ่าน ไวลด์การ์ด ที่อยู่ IP หรือชื่อภายในเครื่อง โดเมนของ YouTube หรือ Vimeo จะถูกปฏิเสธ เพราะมีในตัวอยู่แล้ว
  • เว็บไซต์หนึ่งมีต้นทางได้สูงสุด 20 รายการ แต่ละรายการมีชื่อยาว 1 ถึง 60 อักขระ
  • ลิงก์ YouTube แบบดู แชร์ Shorts ถ่ายทอดสด หรือเครื่องเล่น จะกลายเป็นที่อยู่ youtube-nocookie.com/embed/… แบบเพิ่มความเป็นส่วนตัว ลิงก์ Vimeo จะกลายเป็น player.vimeo.com/video/…?dnt=1 ลิงก์บนต้นทางที่อนุญาตจะใส่ในเฟรมตามที่ให้มา สิ่งอื่นจะถูกปฏิเสธโดยระบุชื่อ: embed_url_malformed, embed_url_not_https, embed_url_credentials, embed_url_ambiguous (ลิงก์ของผู้ให้บริการที่ไม่ได้ระบุวิดีโอเดียว) หรือ embed_provider_unknown
  • ตัวแก้ไขไม่เคยโหลดผู้ให้บริการ แต่แสดงตัวยึดตำแหน่ง และ ดูตัวอย่าง เปิดที่อยู่ในแท็บใหม่
  • ตัวเรนเดอร์ทั้งสองวาดเฟรมเดียวกัน: sandbox="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox", allow="encrypted-media; picture-in-picture; fullscreen", referrerpolicy="strict-origin-when-cross-origin", loading="lazy" และกล่อง 16:9 ไม่มีรายการใดเปลี่ยนค่าเหล่านี้
  • ตัวเรนเดอร์อ่านต้นทางที่อนุญาตจาก GET /v1/_embeds เฉพาะสำหรับเอกสารที่มี embed แบบนั้น frame-src ของหน้าแบบจัดการระบุเฉพาะเครื่องเล่นในตัวและต้นทางเหล่านั้น
  • การบันทึกที่เพิ่มหรือเปลี่ยน embed จากต้นทางที่ไม่อยู่ในรายการจะถูกปฏิเสธด้วย rich_embed_origin_not_allowed โดยระบุฟิลด์และภาษา กฎนี้ใช้กับตัวแก้ไข API การจัดการ ปลั๊กอิน และการนำเข้าสเปรดชีต embed ที่มีอยู่แล้วในฟิลด์และภาษาเดียวกันยังบันทึกได้หลังจากลบต้นทางออก และการกู้คืนเวอร์ชันเก่าจะไม่ถูกปฏิเสธ: embed เหล่านั้นวาดเป็นลิงก์ธรรมดาจนกว่าจะเพิ่มต้นทางกลับมา สำเนาเว็บไซต์หรือการนำเข้าจาก Strapi นำ embed ที่ต้นทางมีไปด้วยในแบบเดียวกัน ไม่มีสิ่งใดใส่ต้นทางที่ไม่อยู่ในรายการลงในเฟรม
  • เฉพาะหน้าจอนี้ที่เปลี่ยนรายการได้ API การตั้งค่าทั่วไปปฏิเสธการสร้าง เปลี่ยน หรือลบแถว embed_providers (setting_server_owned)

เว็บไซต์จะถูกเก็บไว้ไม่ว่าเกิดอะไรขึ้นระหว่างการตั้งค่า และส่วน โพสต์ จะแสดงว่าต้องทำอะไร:

  • การตั้งค่าบล็อกไม่เสร็จ (เช่น เครือข่ายล้มเหลว): กด ลองอีกครั้ง ไม่มีอะไรถูกทำเครื่องหมายว่าพร้อม
  • การตั้งค่าบล็อกถูกบล็อกโดยโมเดล “post” ที่มีอยู่: เว็บไซต์มีโมเดลที่มี slug post อยู่แล้ว ซึ่งไม่ตรงกับโมเดลเริ่มต้น Dee Wan ไม่แตะต้องโมเดลนั้น กด เปิดตัวสร้างเนื้อหา เปลี่ยนชื่อหรือลบโมเดลนั้น หรือทำให้ตรงกัน แล้วกด ลองอีกครั้ง

สถานะถูกเก็บไว้กับเว็บไซต์ การโหลดใหม่จึงแสดงหน้าจอเดิม บล็อก จะไม่ถูกเรนเดอร์ต่อสาธารณะจนกว่าการตั้งค่าจะเสร็จ

โพสต์ล่าสุด เป็นส่วนสำหรับหน้าใดก็ได้ เพิ่มจาก เพิ่มส่วน → แพตเทิร์น → โพสต์ล่าสุด ส่วนนี้แสดงโพสต์ที่เผยแพร่ใหม่ที่สุดหกโพสต์ พร้อมภาพปก ชื่อเรื่อง และวันที่เผยแพร่

ส่วนนี้เป็นค่าที่ตั้งไว้ล่วงหน้าของส่วน รายการล่าสุด ซึ่งแสดงคอลเลกชันสาธารณะใดก็ได้ ใน inspector ให้เลือก:

  • คอลเลกชัน: โมเดลที่จะแสดง ต้องเป็นสาธารณะ
  • ช่องชื่อเรื่อง และถ้าต้องการ ช่องรูปภาพ, ช่องสรุป และ ช่องวันที่
  • จำนวน: 1 ถึง 12
  • ข้อความเมื่อยังไม่มีการเผยแพร่: แสดงเฉพาะเมื่อคอลเลกชันไม่มีรายการที่เผยแพร่

เมื่อเลือกฟิลด์วันที่ รายการจะเรียงจากวันที่นั้นใหม่สุดก่อน มิฉะนั้นจะเรียงจากที่เผยแพร่ล่าสุดก่อน

หน้าเก็บเฉพาะตัวเลือกเหล่านี้ ไม่เคยเก็บรายการ ถ้าโมเดลหรือฟิลด์ที่เลือกไม่มีอยู่แล้ว inspector จะระบุชื่อ และส่วนจะแสดงข้อผิดพลาดแทนรายการว่าง

เว็บไซต์ที่มีโมเดลสาธารณะธรรมดา project (ฟิลด์ name ข้อความ photo สื่อ intro ข้อความจัดรูปแบบ completed_on วันที่) แสดงโปรเจกต์ใหม่ที่สุดได้ด้วย:

ตัวเลือก ค่า
คอลเลกชัน project
ช่องชื่อเรื่อง name
ช่องรูปภาพ photo
ช่องสรุป intro
ช่องวันที่ completed_on
จำนวน 3

โปรเจกต์ถูกสร้าง ตรวจทาน และเผยแพร่ในส่วน เนื้อหา เหมือนรายการของโมเดลอื่น ไม่มีอะไรเกี่ยวกับโมเดล project เปลี่ยนไป

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

npm run backend:generate -- --model post ไม่ใช่การส่งออก บล็อก การสร้างโมเดลเดียวให้เฉพาะ API ของโมเดลนั้น: ไม่มีหน้าเว็บไซต์ ไม่มีเส้นทาง /blog และไม่มีฟรอนต์เอนด์ของ บล็อก ให้สร้างทั้งเว็บไซต์แทน

เว็บไซต์ที่สร้างขึ้นอ่านโพสต์ที่เผยแพร่จาก /v1 บนโฮสต์ของเว็บไซต์เองเมื่อมีการร้องขอหน้า บล็อก หรือหน้าที่มี «รายการล่าสุด» ส่วน «รายการล่าสุด» ในส่วนที่ใช้ร่วมกันที่แสดงในพื้นที่ของ Site Chrome จะอ่านตอนสร้างและตรึงไว้ในเว็บไซต์ จึงไม่ทำให้หน้าต้องอ่านตอนร้องขอ Worker ของเว็บไซต์ต้องมีแฟล็กความเข้ากันได้ global_fetch_strictly_public สำหรับการอ่านนั้น โปรเจกต์ใหม่ได้แฟล็กนี้ใน apps/site/wrangler.jsonc ไฟล์นั้นเป็นของคุณทันทีที่มีอยู่: Dee Wan ไม่เคยเขียนทับ ถ้าไฟล์ที่มีอยู่ของคุณไม่มีแฟล็กนี้ การสร้างและการดีพลอยจะปฏิเสธด้วย public_fetch_compatibility_flag_required และบอกชื่อแฟล็กที่ต้องเพิ่ม ดู แยกและตรวจสอบเว็บไซต์แบบแยกอิสระของคุณ

เทมเพลตแบบจัดการในตัวและเว็บไซต์ที่สร้างขึ้นวาด «รายการล่าสุด» และให้บริการฟีด RSS เว็บไซต์ บล็อก จะยังไม่พร้อมเรนเดอร์ขณะที่การตั้งค่ายังไม่เสร็จ ไม่มีโมเดล post หรือโมเดลถูกเปลี่ยนในแบบที่ บล็อก เรนเดอร์ไม่ได้ (รวมถึงฟิลด์ categories, tags หรือ authors ที่ไม่ใช่ความสัมพันธ์ของส่วนเสริม) หรือเส้นทางของ บล็อก ชนกัน

กำหนดหรือขยายชนิดเนื้อหาของคุณใน โมเดลและฟิลด์


ยังไม่เปิดตัว (pre-MVP) และยังไม่มีเวอร์ชันเสถียร
คอมมิตซอร์สโค้ด: fe23db481c422b40e317b92fc98116b4c0c26a87 (มีการแก้ไขที่ยังไม่คอมมิต)
วันที่สร้างเอกสาร (UTC): 2026-10-18T09:22:34.630Z
คอมมิตสำหรับอัปเกรด: ระบุไม่ได้: มีการแก้ไขที่ยังไม่คอมมิต. บันทึกการเปลี่ยนแปลง