~30 วินาที กลายเป็นตัวห้อยจิ๋ว — กับดัก Litedown ของ Flarum ที่คนไทยเจอบ่อย
Flarum ไม่ได้ใช้ CommonMark ตรง ๆ แต่ใช้ Litedown ที่มีไวยากรณ์ต่างกันบางจุด — จุดที่กัดคนไทยที่สุดคือ ~ ซึ่งเราชอบใช้แทน "ประมาณ" แต่ Litedown อ่านเป็นตัวเปิด subscript
พอดีผมดูแลบอร์ด Flarum แล้วเจอปัญหาที่คนโพสต์บ่นซ้ำ ๆ — พิมพ์ว่า "รอ ~30 วินาที" แล้วเลข 30 มันกลายเป็นตัวห้อยจิ๋ว ๆ ลอยอยู่ท้ายบรรทัดแทนที่จะเป็นข้อความปกติ ตอนแรกนึกว่า theme เพี้ยน จริง ๆ แล้วเป็นเรื่องไวยากรณ์ของตัว markdown ที่ Flarum ใช้ ซึ่งคนไทยเจอกันบ่อยเพราะนิสัยการพิมพ์ เลยเอามาเล่าไว้
Flarum ไม่ได้ใช้ CommonMark
Flarum เรนเดอร์ด้วย Litedown (ตระกูล s9e/TextFormatter) ไม่ใช่ CommonMark ที่คนคุ้น หน้าตาคล้ายกันแต่มีจุดต่าง จุดที่กัดหนักสุดคือ ~
พิมพ์ ~30 Litedown อ่านว่าเปิด subscript แล้วปิดเองโดยปริยาย — เลข 30 เลยกลายเป็นตัวห้อย คนไทยชอบใช้ ~ แทน "ประมาณ" (ราว ~30 วิ, ~5 GB) เลยเจอกันประจำ
วิธีเลี่ยงตอนพิมพ์
ง่ายสุดคือเลี่ยงเครื่องหมาย ~ ไปเลยเวลาสื่อความว่า "ประมาณ":
- ใช้คำไทยตรง ๆ: "ราว 30 วินาที", "ประมาณ 5 GB"
- ใช้สัญลักษณ์อื่น:
≈ 30 - ถ้าจำเป็นต้องมี
~จริง ๆ ครอบด้วย inline code:`~30`จะแสดงเป็น ~30 ตามตัว
เช่นเดียวกัน ^ ใน Litedown = superscript ถ้าจะพิมพ์ x^2 แบบตัวยกได้ แต่ถ้าไม่ตั้งใจก็ครอบ inline code เหมือนกัน
แก้ของเก่าผ่าน DB — ต้องรู้ว่ามันเก็บเป็น s9e XML
ถ้าจะแก้โพสต์เก่าจำนวนมากผ่านฐานข้อมูลตรง ๆ มีกับดักสำคัญ: Flarum ไม่ได้เก็บ markdown ดิบใน posts.content แต่เก็บเป็น s9e XML ที่ parse แล้ว
# ดูของจริงในคอลัมน์ content — จะเห็นเป็น XML ไม่ใช่ ~30
# <r><SUB>...</SUB></r> ประมาณนี้ ไม่ใช่ข้อความดิบ
การ REPLACE ตรง ๆ ต้องเขียนให้รู้จักโครงสร้าง XML ไม่ใช่ค้นหา "~30" เพราะในฐานข้อมูลมันไม่ได้หน้าตาแบบนั้นแล้ว — แก้เสร็จอย่าลืม clear cache ให้ re-render
php flarum cache:clear
บางโฮสต์ ModSecurity บล็อกเมธอด PATCH ของ API Flarum — ถ้าเจอ ใช้ header X-HTTP-Method-Override: PATCH ยิงเป็น POST แทน และการซ่อนโพสต์ต้องตั้ง hidden_at ทั้งตาราง discussions และ posts ไม่ใช่ตารางเดียว
สรุป
- Flarum ใช้ Litedown ไม่ใช่ CommonMark —
~= subscript,^= superscript - คนไทยเจอบ่อยเพราะใช้ ~ แทน "ประมาณ" — เลี่ยงด้วยคำไทยหรือครอบ inline code
- แก้ผ่าน DB ต้องรู้ว่าเก็บเป็น s9e XML ไม่ใช่ markdown ดิบ แล้ว cache:clear
- ModSec บล็อก PATCH -> ใช้ X-HTTP-Method-Override; ซ่อนโพสต์ตั้ง hidden_at 2 ตาราง
เรื่องนี้เล็กแต่เจอกันเยอะ โดยเฉพาะบอร์ดที่คนไทยพิมพ์กันเยอะ ๆ พอรู้ว่า ~ มีความหมายพิเศษก็เลี่ยงได้ง่าย และถ้าต้องไปแก้ของเก่าเป็นจำนวนมาก อย่าลืมว่าในฐานข้อมูลมันเป็น XML ไม่ใช่ตัวที่เราพิมพ์ ใครดูแล Flarum ที่มีเนื้อหาไทยเยอะ ๆ เก็บไว้กันงงครับ ตรงไหนผมอธิบายตกหล่นหรือพิมพ์ผิด เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



ความคิดเห็น 0
ยังไม่มีความคิดเห็น — เป็นคนแรกเลย