# ฟอร์มตั้งค่าร้านค้าออนไลน์ ## คุณสมบัติหลัก ### 1. การตั้งค่าทั่วไป (General Settings) - **ชื่อร้านค้า**: กำหนดชื่อร้านค้าที่จะแสดงในหน้าเว็บ - **คำอธิบายร้านค้า**: คำอธิบายสั้นๆ เกี่ยวกับร้านค้า - **โลโก้ร้านค้า**: อัพโลดโลโก้ของร้านค้า - **ข้อมูลติดต่อ**: เบอร์โทร, อีเมล, ที่อยู่ - **โซเชียลมีเดีย**: Facebook, Line ID ### 2. การตั้งค่าการชำระเงิน (Payment Settings) - **PromptPay**: หมายเลข PromptPay และชื่อบัญชี - **บัญชีธนาคาร**: เพิ่ม/ลบบัญชีธนาคารหลายบัญชี - **COD**: เปิด/ปิดการชำระเงินปลายทาง ### 3. การตั้งค่าการจัดส่ง (Shipping Settings) - **ค่าจัดส่งทั่วไป**: กำหนดค่าจัดส่งพื้นฐาน - **จัดส่งฟรี**: ยอดขั้นต่ำสำหรับจัดส่งฟรี - **เขตพื้นที่จัดส่ง**: กำหนดเขตและค่าจัดส่งแต่ละเขต - **ระยะเวลาจัดส่ง**: กำหนดระยะเวลาจัดส่งขั้นต่ำและสูงสุด ### 4. การตั้งค่าสินค้า (Products Settings) - **หมวดหมู่สินค้า**: เพิ่ม/ลบ/แก้ไขหมวดหมู่สินค้า - **ไซส์สินค้า**: กำหนดไซส์ที่มีให้เลือก - **สีสินค้า**: กำหนดสีและ Hex Code ของสีต่างๆ ### 5. การตั้งค่าการแจ้งเตือน (Notifications Settings) - **อีเมลผู้ดูแล**: อีเมลสำหรับรับการแจ้งเตือน - **การแจ้งเตือนออเดอร์**: แจ้งเตือนออเดอร์ใหม่, การชำระเงิน - **การแจ้งเตือนลูกค้า**: อีเมลยืนยันออเดอร์, การจัดส่ง - **Line Notify**: Token สำหรับแจ้งเตือนผ่าน Line ### 6. การตั้งค่าระบบ (System Settings) - **ภาษาและสกุลเงิน**: กำหนดภาษาและสกุลเงินของระบบ - **โซนเวลา**: กำหนดโซนเวลาสำหรับระบบ - **API Configuration**: Base URL ของ API - **ความปลอดภัย**: JWT Secret Key, Session Timeout - **โหมดพิเศษ**: Debug Mode, Maintenance Mode ## การใช้งาน ### การเปิดฟอร์มตั้งค่า 1. คลิกไอคอนเฟือง (⚙️) ที่มุมขวาบนของหน้าเว็บ 2. ฟอร์มตั้งค่าจะเปิดขึ้นมาในรูปแบบ Modal ### การนำทางระหว่างแท็บ - ใช้แท็บด้านบนเพื่อสลับระหว่างหมวดการตั้งค่าต่างๆ - แต่ละแท็บจะมีไอคอนและชื่อที่สื่อความหมาย ### การบันทึกการตั้งค่า 1. กรอกข้อมูลในแต่ละแท็บตามต้องการ 2. คลิกปุ่ม "บันทึกการตั้งค่า" เมื่อเสร็จสิ้น 3. ระบบจะบันทึกทั้งใน LocalStorage และ API (หากมี) ### การ Export/Import การตั้งค่า - **Export**: คลิกปุ่ม "Export" เพื่อดาวน์โลดไฟล์การตั้งค่า (.json) - **Import**: คลิกปุ่ม "Import" เพื่อนำเข้าการตั้งค่าจากไฟล์ - **รีเซ็ต**: คลิกปุ่ม "รีเซ็ต" เพื่อกลับไปใช้การตั้งค่าเริ่มต้น ## ฟีเจอร์เพิ่มเติม ### การอัพเดตแบบเรียลไทม์ - เมื่อบันทึกการตั้งค่า หน้าเว็บจะอัพเดตทันที - ชื่อร้าน, ข้อมูลติดต่อ, หมวดหมู่สินค้าจะเปลี่ยนแปลงทันที ### การจัดการหมวดหมู่และตัวเลือกสินค้า - เพิ่ม/ลบหมวดหมู่สินค้าได้แบบไดนามิก - เพิ่ม/ลบไซส์และสีสินค้าตามต้องการ - ระบบจะอัพเดต dropdown filter ในหน้าสินค้าทันที ### ความปลอดภัย - JWT Secret Key สามารถสร้างใหม่ได้อัตโนมัติ - ข้อมูลที่สำคัญจะถูกเข้ารหัสก่อนส่งไป API - มีการตรวจสอบสิทธิ์ Admin ก่อนการแก้ไข ## การเชื่อมต่อกับ API ### Endpoints ที่เกี่ยวข้อง - `GET /api/admin/settings` - ดึงการตั้งค่าปัจจุบัน - `POST /api/admin/settings` - บันทึกการตั้งค่าใหม่ - `POST /api/admin/settings/reset` - รีเซ็ตการตั้งค่า - `GET /api/admin/settings/export` - ส่งออกการตั้งค่า - `POST /api/admin/settings/import` - นำเข้าการตั้งค่า ### การจัดเก็บข้อมูล - **Frontend**: ใช้ LocalStorage สำหรับจัดเก็บชั่วคราว - **Backend**: บันทึกในไฟล์ JSON (/api/storage/settings.json) - **Database**: สามารถขยายให้เก็บในฐานข้อมูลได้ในอนาคต ## การปรับแต่ง ### การเพิ่มการตั้งค่าใหม่ 1. เพิ่มฟิลด์ใหม่ในฟอร์ม HTML 2. อัพเดตฟังก์ชัน `collectSettings()` ใน JavaScript 3. เพิ่มการ validation ใน `SettingsController.php` 4. อัพเดตฟังก์ชัน `applySettings()` สำหรับการนำไปใช้ ### การปรับแต่ง UI - CSS classes สำหรับการตั้งค่าขึ้นต้นด้วย `.settings-` - สามารถปรับสีธีม, ขนาด, และเอฟเฟคได้ใน `style.css` - Responsive design รองรับทุกขนาดหน้าจอ ## การแก้ไขปัญหา ### การตั้งค่าไม่บันทึก 1. ตรวจสอบ Console ใน Developer Tools 2. ตรวจสอบการเชื่อมต่อ API 3. ตรวจสอบสิทธิ์ Admin Token ### การตั้งค่าไม่แสดงผล 1. ตรวจสอบ LocalStorage ใน Developer Tools 2. ลองรีเฟรชหน้าเว็บ 3. ตรวจสอบ JavaScript Errors ### การ Import/Export ไม่ทำงาน 1. ตรวจสอบรูปแบบไฟล์ JSON 2. ตรวจสอบสิทธิ์การเข้าถึงไฟล์ 3. ลองใช้ฟีเจอร์ LocalStorage แทน API ## ข้อควรระวัง 1. **สำรองข้อมูล**: ควร Export การตั้งค่าก่อนทำการเปลี่ยนแปลงครั้งใหญ่ 2. **การทดสอบ**: ทดสอบการตั้งค่าใหม่ก่อนนำไปใช้งานจริง 3. **ความปลอดภัย**: อย่าแชร์ JWT Secret Key หรือข้อมูลที่สำคัญ 4. **Performance**: หลีกเลี่ยงการตั้งค่าที่ซับซ้อนเกินไปซึ่งอาจส่งผลต่อประสิทธิภาพ