README.md

3.52 KB
12/10/2025 08:34
MD
# Website Template Editor (ตัวแก้ไขเทมเพลตเว็บไซต์)

A lightweight browser-based WYSIWYG website template editor that lets you build and edit templates using components and plugins, with local persistence so edits survive page reloads.

ชื่อโปรเจ็ค: Website Template Editor (ตัวแก้ไขเทมเพลตเว็บไซต์)

## ความสามารถหลัก

- สร้าง/แก้ไขเทมเพลต HTML ด้วยอินเทอร์เฟซแบบ WYSIWYG
- โมดูลและปลั๊กอินที่ขยายได้ (header, footer, hero, carousel, card, grid ฯลฯ)
- Drag & drop component panel
- บันทึกเทมเพลตในเบราว์เซอร์ (localStorage) ผ่าน `StorageService` / `TemplateSaver`
- โหลดเทมเพลตจากไฟล์, URL หรือ localStorage ผ่าน `TemplateLoader`
- ประวัติเหตุการณ์ (EventBus) เพื่อให้โมดูลสื่อสารกัน

## เริ่มใช้งาน (Quick start)

1. เปิด `index.html` ในเบราว์เซอร์ (ไม่จำเป็นต้องมีเซิร์ฟเวอร์ สำหรับทดสอบพื้นฐาน)
2. กดปุ่ม "แก้ไข" เพื่อเข้าสู่โหมดแก้ไข แล้วแก้ไของค์ประกอบภายในหน้า
3. กดปุ่ม "บันทึก" เพื่อบันทึกการเปลี่ยนแปลงลงใน localStorage
4. โหลดหน้าใหม่ — เทมเพลตที่บันทึกไว้จะถูกกู้คืนอัตโนมัติ (restored)

หมายเหตุ: หากทดสอบจากไฟล์ระบบไฟล์ (file://) บราวเซอร์บางตัวอาจจำกัดฟีเจอร์ XHR/ไฟล์; ใช้เซิร์ฟเวอร์แบบง่ายถ้าจำเป็น (ตัวอย่าง: `npx http-server` หรือ `python -m http.server`).

## โครงสร้างโปรเจ็ค

- `index.html` — หน้าเริ่มต้นและตัวโหลดสคริปต์
- `editor/`
  - `editor.js` — entry point ของแอป, โหลดบริการ/โมดูล/ปลั๊กอิน
  - `core/` — ยูทิลิตี้หลัก
    - `eventBus.js` — ระบบเหตุการณ์ (EventBus)
    - `domUtils.js`, `moduleManager.js`, `uiManager.js` — ตัวช่วยต่างๆ
  - `modules/` — โมดูล UI (toolbar, componentPanel, contentEditor, ฯลฯ)
  - `services/` — บริการเก็บ/โหลดเทมเพลต (`storageService.js`, `templateSaver.js`, `templateLoader.js`)
  - `plugins/` — ปลั๊กอินคอมโพเนนต์ (header, hero, footer, ฯลฯ)

## การพัฒนา

- เปิด `index.html` แล้วลองทำงานกับ UI
- หากต้องการ server สำหรับทดสอบ cross-origin/XHR ใช้คำสั่งอย่างเช่น:

```bash
# Simple static server (Node)
npx http-server . -p 8080
# Or Python 3
python -m http.server 8080
```

จากนั้นเปิด `http://localhost:8080/index.html`