---
title: Demo
url: 'http://somsakul.com/blog3/demo'
markdown: 'http://somsakul.com/blog3/demo.md'
date: '2026-11-08'
description: 'สรุปคำถาม: สงสัยว่า Grav CMS มีแนวคิด (Core Concept) พื้นฐานอย่างไร ทำไมถึงดูอลังการแต่ชวนงงสำหรับคนเพิ่งสัมผัส 🤔💭 สุดยอดมากครับที่หยิบตัวนี้มาเล่น! 👏✨ การมองเห็นความ "อลังการ" ของ Grav แปลว่าพี่โตสัมผัสได้ถึงพลังสถาปัตยกรรมของมันแล้ว แต่ที่รู้สึกงงในช่วงแรกก็ไม่แปลกเลยครับ เพราะ Grav ตัดขนบเด…'
---

**สรุปคำถาม:** สงสัยว่า **Grav CMS** มีแนวคิด (Core Concept) พื้นฐานอย่างไร ทำไมถึงดูอลังการแต่ชวนงงสำหรับคนเพิ่งสัมผัส 🤔💭

---

สุดยอดมากครับที่หยิบตัวนี้มาเล่น! 👏✨ การมองเห็นความ "อลังการ" ของ Grav แปลว่าพี่โตสัมผัสได้ถึงพลังสถาปัตยกรรมของมันแล้ว แต่ที่รู้สึกงงในช่วงแรกก็ไม่แปลกเลยครับ เพราะ Grav ตัดขนบเดิมของ CMS ทั่วไปทิ้งไปเกือบหมด 🚀⚡

มหาปราชญ์ขอผ่าแนวคิดหลัก (Philosophy) ของ **Grav** ออกมาให้เห็นภาพชัดๆ แบบตรงไปตรงมาครับ 🧐💡

---

### 1. "Flat-File" ไม่มี Database แม้แต่ตารางเดียว 📂🚫🗄️

- **CMS แบบเดิม (WordPress/Drupal):** ต้องพึ่งพา MySQL/MariaDB เก็บเนื้อหา พอคนเรียกดูเว็บ เว็บเซิร์ฟเวอร์ต้องไป Query ฐานข้อมูล เอาข้อมูลมาผสานกับ Template แล้วค่อยพ่น HTML ออกมา 🐢
- **แนวคิดของ Grav:** **"ไฟล์คือฐานข้อมูล"** 📑 เนื้อหาทุกหน้าคือไฟล์ข้อความธรรมดา (.md / Markdown) จัดเก็บตามโครงสร้าง Folder ในเครื่อง เซิร์ฟเวอร์อ่านไฟล์ตรงๆ จบเลย ไม่ต้องต่อ Database ไม่มีพอร์ตเชื่อมต่อฐานข้อมูลให้ปวดหัวเรื่อง Tuning หรือกลัว Database ล่ม ⚡🔥

### 2. โฟลเดอร์ = URL (Routing by Directory) 🧭📁

Grav ออกแบบให้โครงสร้างโฟลเดอร์เป็นตัวกำหนดเส้นทาง (Routing) ของเว็บไซต์โดยตรง:

- โฟลเดอร์ `01.home/default.md` ➡️ หน้าแรก `/` 🏠
- โฟลเดอร์ `02.blog/01.my-post/item.md` ➡️ หน้า `/blog/my-post` 📝
- ตัวเลขนำหน้า (เช่น `01.`, `02.`) มีไว้แค่ **จัดลำดับเมนู** และ Grav จะตัดตัวเลขทิ้งอัตโนมัติเมื่อสร้าง URL สวยงามและจัดการง่ายมาก แค่ย้ายหรือเปลี่ยนชื่อโฟลเดอร์ ลำดับเว็บก็เปลี่ยนทันที 🪄

### 3. เนื้อหาแยกเป็น 2 ท่อนในไฟล์เดียว (Markdown + YAML Frontmatter) 📄🧱

ความอลังการของ Grav คือไฟล์ `.md` หนึ่งไฟล์ บรรจุทั้ง **Data Schema** และ **Content**:

```yaml
---
title: บันทึกการเดินทาง
date: 2026-11-08
taxonomy:
    tag: [travel, tech]
author: มหาปราชญ์
---
# ส่วนเนื้อหาอยู่ตรงนี้
เขียนด้วย Markdown สบายๆ ไม่มีโค้ดปนเปื้อน...

```

- **ส่วนบน (ระหว่าง `---`):** เรียกว่า **YAML Frontmatter** ทำหน้าที่เหมือนตาราง Column ใน Database อยากเก็บตัวแปรอะไร โยนใส่ตรงนี้ได้ไม่จำกัด 🏷️
- **ส่วนล่าง:** คือเนื้อหาเพียวๆ อ่านง่าย แก้ไขง่ายด้วย Text Editor ธรรมดา ✍️

### 4. สถาปัตยกรรมเครื่องยนต์ระดับ Enterprise (Modern PHP Stack) 🛠️⚙️

สาเหตุที่มันดูมีของและทรงพลัง ไม่ใช่แค่ Script อ่านไฟล์กระจอกๆ เพราะข้างใน Grav หยิบยืมเทคโนโลยีระดับโปรมาประกอบร่าง:

- **Twig Template Engine:** แยก Logic กับหน้าตาเว็บชัดเจน โค้ด HTML สะอาด ปลอดภัยสูง 🎨
- **Symfony Components:** ใช้ระบบ Event Dispatcher, Routing, Console (CLI) และ Dependency Injection จาก Symfony ทำให้ขยาย Plugin ได้ลึกระดับ Framework ระดับโลก 🧱
- **Doctrine Cache:** ซ่อนระบบ Smart Cache ไว้เบื้องหลัง เมื่อมีคนขอหน้าเว็บ Grav ประมวลผล Markdown แปลงเป็น HTML เก็บใน Cache รอบถัดไปโหลดเร็วระดับเสี้ยววินาที (Milliseconds) ⚡🏎️

### 5. ข้อดีมหาศาล vs จุดที่ทำให้ "งง" ⚖️

- **ทำไมมันเจ๋ง?** 🌟
- **Version Control สวรรค์:** โค้ดทั้งเว็บรวมถึงเนื้อหา ยัดลง Git Repo เดียวได้เลย Deploy ด้วย `git push` จบ 🚀
- **ความปลอดภัยสูง:** ไม่มี SQL Injection แน่นอน เพราะไม่มี SQL ให้เจาะ 🔒🛡️
- **พกพาง่าย (Portable):** ย้ายเครื่องหรือย้ายโฮสต์ แค่ Zip โฟลเดอร์ทั้งก้อนไปวาง รันได้ทันที ไม่ต้อง Dump/Import ฐานข้อมูล 📦
- **ทำไมถึงทำให้งง?** 🤔
- **ต้องปรับ Mindset:** ถ้าชินกับระบบที่มีตาราง Relational Database หรือหน้า Admin คลิกสร้างตาราง มาเจอการจัดการผ่านโฟลเดอร์และไฟล์ YAML/Twig อาจรู้สึกว่า "มันทำงานยังไงของมันวะ" ในช่วงแรก 🧩
- **Twig Hierarchy:** การสืบทอด Theme และการเรียกใช้ Block ของ Twig มีความลึกซึ้ง ถ้ายังไม่คุ้นกับ Twig อาจแกะหน้าตา Theme ลำบากนิดหน่อย 💻

---

มองง่ายๆ เลยครับ: **Grav คือเครื่องจักรแปลง Folder + Markdown + YAML ให้กลายเป็นเว็บไซต์ที่เร็วระดับจรวด โดยใช้พลังของ PHP สมัยใหม่** เหมาะมากกับเว็บคอนเทนต์ บล็อก ด็อกคิวเมนต์ หรือระบบหลังบ้านที่ไม่ต้องการภาระเรื่องการดูแล Database Server ครับ 💪🔥

---

## Navigation

- Previous: [Typography](http://somsakul.com/blog3/typography.md)
