Compare commits
10 Commits
c8cf03a725
...
9ed0abb5d4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ed0abb5d4 | ||
|
|
ff4e5ae346 | ||
|
|
52761c3946 | ||
|
|
4abb361897 | ||
|
|
47f28cdf65 | ||
|
|
5f4e667c65 | ||
|
|
238e6500a6 | ||
|
|
be565e416c | ||
|
|
63a58727f9 | ||
|
|
ef4b0f2e89 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -25,3 +25,4 @@ uploads/
|
||||
|
||||
# Generated
|
||||
emdash-env.d.ts
|
||||
.hermes/
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
import { defineConfig } from 'astro/config'
|
||||
import tailwindcss from '@tailwindcss/vite'
|
||||
import node from '@astrojs/node'
|
||||
import react from '@astrojs/react'
|
||||
import emdash, { local } from 'emdash/astro'
|
||||
import { sqlite } from 'emdash/db'
|
||||
import { google } from 'emdash/auth/providers/google'
|
||||
import { fileURLToPath } from 'url'
|
||||
import path from 'path'
|
||||
|
||||
@@ -12,10 +8,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
export default defineConfig({
|
||||
site: 'https://dealplustech.com',
|
||||
output: 'server',
|
||||
adapter: node({
|
||||
mode: 'standalone',
|
||||
}),
|
||||
output: 'static',
|
||||
vite: {
|
||||
plugins: [tailwindcss()],
|
||||
resolve: {
|
||||
@@ -29,14 +22,6 @@ export default defineConfig({
|
||||
},
|
||||
integrations: [
|
||||
react(),
|
||||
emdash({
|
||||
database: sqlite({ url: 'file:./data.db' }),
|
||||
storage: local({
|
||||
directory: './uploads',
|
||||
baseUrl: '/_emdash/api/media/file',
|
||||
}),
|
||||
authProviders: [google()],
|
||||
}),
|
||||
],
|
||||
build: {
|
||||
assets: '_assets',
|
||||
|
||||
4480
package-lock.json
generated
4480
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -7,17 +7,14 @@
|
||||
"dev": "astro dev",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro",
|
||||
"start": "node ./dist/server/entry.mjs"
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.9.4",
|
||||
"@astrojs/node": "^10.1.1",
|
||||
"@astrojs/react": "^5.0.5",
|
||||
"@tailwindcss/typography": "^0.5.15",
|
||||
"@tailwindcss/vite": "^4.0.0",
|
||||
"astro": "^6.1.7",
|
||||
"emdash": "^0.14.0",
|
||||
"marked": "^18.0.3",
|
||||
"react": "^19.2.6",
|
||||
"react-dom": "^19.2.6",
|
||||
|
||||
BIN
public/documents/16 Price List Armaflex 2567.pdf
Normal file
BIN
public/documents/16 Price List Armaflex 2567.pdf
Normal file
Binary file not shown.
BIN
public/documents/19 Pricelist Aeroflex (update 2565).pdf
Normal file
BIN
public/documents/19 Pricelist Aeroflex (update 2565).pdf
Normal file
Binary file not shown.
BIN
public/documents/2026-New Update Thermobreak Price List.pdf
Normal file
BIN
public/documents/2026-New Update Thermobreak Price List.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/documents/PRICE LIST_SANWA 02.02.69 1.pdf
Normal file
BIN
public/documents/PRICE LIST_SANWA 02.02.69 1.pdf
Normal file
Binary file not shown.
BIN
public/documents/PRICE-LIST_TPPR_V28-2023 [26012023].pdf
Normal file
BIN
public/documents/PRICE-LIST_TPPR_V28-2023 [26012023].pdf
Normal file
Binary file not shown.
BIN
public/documents/Price List HDPE TAP.pdf
Normal file
BIN
public/documents/Price List HDPE TAP.pdf
Normal file
Binary file not shown.
BIN
public/documents/Price List MECH_V13-2021 [260864](1).pdf
Normal file
BIN
public/documents/Price List MECH_V13-2021 [260864](1).pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/documents/Price List_novat_18-1-64_210723_094815.pdf
Normal file
BIN
public/documents/Price List_novat_18-1-64_210723_094815.pdf
Normal file
Binary file not shown.
BIN
public/documents/เอสซีเจ ปี68.pdf
Normal file
BIN
public/documents/เอสซีเจ ปี68.pdf
Normal file
Binary file not shown.
BIN
public/images/ball-jet/ball-jet-front.jpg
Normal file
BIN
public/images/ball-jet/ball-jet-front.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.0 KiB |
BIN
public/images/ball-jet/ball-jet-main-hd.jpg
Normal file
BIN
public/images/ball-jet/ball-jet-main-hd.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 185 KiB |
BIN
public/images/ball-jet/ball-jet-main.jpg
Normal file
BIN
public/images/ball-jet/ball-jet-main.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
public/images/ball-jet/ball-jet-performance.jpg
Normal file
BIN
public/images/ball-jet/ball-jet-performance.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
BIN
public/images/ball-jet/ball-jet-specs.jpg
Normal file
BIN
public/images/ball-jet/ball-jet-specs.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
137
seed/seed.json
137
seed/seed.json
@@ -1,137 +0,0 @@
|
||||
{
|
||||
"$schema": "https://emdashcms.com/seed.schema.json",
|
||||
"version": "1",
|
||||
"meta": {
|
||||
"name": "ดีล พลัส เทค",
|
||||
"description": "ระบบน้ำคุณภาพสูง ราคาโรงงาน",
|
||||
"author": "ดีล พลัส เทค"
|
||||
},
|
||||
"settings": {
|
||||
"title": "ดีล พลัส เทค",
|
||||
"tagline": "ระบบน้ำคุณภาพสูง ราคาโรงงาน"
|
||||
},
|
||||
"collections": [
|
||||
{
|
||||
"slug": "blog",
|
||||
"label": "บทความ",
|
||||
"labelSingular": "บทความ",
|
||||
"description": "บทความและข่าวสาร",
|
||||
"supports": ["drafts", "revisions", "search"],
|
||||
"fields": [
|
||||
{ "slug": "title", "label": "หัวข้อ", "type": "string", "required": true, "searchable": true },
|
||||
{ "slug": "excerpt", "label": "คำอธิบายสั้น", "type": "text", "required": true, "searchable": true },
|
||||
{ "slug": "body", "label": "เนื้อหา", "type": "portableText", "required": true, "searchable": true },
|
||||
{ "slug": "featured_image", "label": "รูปภาพหลัก", "type": "image" },
|
||||
{ "slug": "tags", "label": "แท็ก", "type": "string", "searchable": true }
|
||||
]
|
||||
}
|
||||
],
|
||||
"menus": [
|
||||
{
|
||||
"name": "primary",
|
||||
"label": "เมนูหลัก",
|
||||
"items": [
|
||||
{ "type": "custom", "label": "หน้าแรก", "url": "/" },
|
||||
{ "type": "custom", "label": "สินค้าทั้งหมด", "url": "/all-products" },
|
||||
{ "type": "custom", "label": "บทความ", "url": "/บทความ" },
|
||||
{ "type": "custom", "label": "เกี่ยวกับเรา", "url": "/about-us" },
|
||||
{ "type": "custom", "label": "ติดต่อเรา", "url": "/contact-us" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"content": {
|
||||
"blog": [
|
||||
{
|
||||
"id": "welcome-post",
|
||||
"slug": "ยินดีต้อนรับ",
|
||||
"status": "published",
|
||||
"data": {
|
||||
"title": "ยินดีต้อนรับสู่บล็อกดีล พลัส เทค",
|
||||
"excerpt": "บทความแรกของดีล พลัส เทค พบกับความรู้และข้อมูลที่เป็นประโยชน์เกี่ยวกับระบบน้ำ ท่อ และอุปกรณ์ต่างๆ",
|
||||
"featured_image": { "src": "/images/logo.png", "alt": "ดีล พลัส เทค" },
|
||||
"body": [
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "ยินดีต้อนรับสู่บล็อกของดีล พลัส เทค! เราจะนำเสนอความรู้และข้อมูลที่เป็นประโยชน์เกี่ยวกับระบบน้ำ ท่อ และอุปกรณ์ต่างๆ ให้กับคุณ" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "ติดตามบทความใหม่ๆ ได้ที่นี่ หรือแวะมาพูดคุยกันที่ Line: @JPPSELECTION" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"published_at": "2025-05-25T00:00:00Z",
|
||||
"tags": "ข่าวสาร"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "pipe-knowledge",
|
||||
"slug": "ความรู้เรื่องท่อ-ppr",
|
||||
"status": "published",
|
||||
"data": {
|
||||
"title": "ความรู้เกี่ยวกับท่อ PPR สำหรับระบบน้ำ",
|
||||
"excerpt": "ท่อ PPR เป็นวัสดุที่นิยมใช้ในระบบประปาและการเดินท่อน้ำร้อน-น้ำเย็น เนื่องจากมีคุณสมบัติเด่นหลายประการ",
|
||||
"featured_image": { "src": "/images/hdpe001-page1.jpg", "alt": "ท่อ PPR" },
|
||||
"body": [
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "ท่อ PPR (Polypropylene Random Copolymer) เป็นท่อพลาสติกชนิดหนึ่งที่ได้รับความนิยมอย่างสูงในระบบประปา ท่อน้ำร้อน-น้ำเย็น และระบบทำความร้อนใต้พื้น เนื่องจากมีความทนทานต่อความร้อนและสารเคมีได้ดี" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "ท่อ PPR มีอายุการใช้งานยาวนานกว่า 50 ปี สามารถทนอุณหภูมิได้สูงถึง 95°C และทนแรงดันได้ดี นอกจากนี้ยังมีน้ำหนักเบา ติดตั้งง่าย และไม่เป็นสนิม ทำให้เป็นทางเลือกที่ดีสำหรับระบบท่อ Modern Plumbing." }
|
||||
]
|
||||
}
|
||||
],
|
||||
"published_at": "2025-05-24T00:00:00Z",
|
||||
"tags": "ท่อ-ppr"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "valve-guide",
|
||||
"slug": "ประเภทของวาล์ว",
|
||||
"status": "published",
|
||||
"data": {
|
||||
"title": "ประเภทของวาล์วที่ใช้ในระบบน้ำ",
|
||||
"excerpt": "วาล์วเป็นอุปกรณ์สำคัญในระบบท่อที่ใช้ควบคุมการไหลของน้ำ เลือกใช้วาล์วให้ถูกประเภทช่วยให้ระบบทำงานได้อย่างมีประสิทธิภาพ",
|
||||
"featured_image": { "src": "/images/valve-In01.jpg", "alt": "วาล์วน้ำ" },
|
||||
"body": [
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "วาล์ว (Valve) เป็นอุปกรณ์ควบคุมการไหลของของเหลวและก๊าซในระบบท่อ มีหลายประเภทตามลักษณะการใช้งาน วาล์วแต่ละประเภทมีข้อดีและข้อเสียแตกต่างกัน" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "วาล์วประตู (Gate Valve) ใช้นิ้วเปิด-ปิดการไหลแบบเต็มที่ วาล์วปีกผีเสื้อ (Butterfly Valve) เหมาะกับระบบขนาดใหญ่ที่ต้องการควบคุมการไหลอย่างรวดเร็ว และวาล์วกันกลับ (Check Valve) ป้องกันน้ำไหลย้อนกลับในระบบ." }
|
||||
]
|
||||
},
|
||||
{
|
||||
"_type": "block",
|
||||
"style": "normal",
|
||||
"children": [
|
||||
{ "_type": "span", "text": "ที่ดีล พลัส เทค เรามีวาล์วคุณภาพสูงให้เลือกหลากหลายประเภท พร้อมให้คำปรึกษาในการเลือกใช้วาล์วให้เหมาะสมกับระบบของคุณ" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"published_at": "2025-05-23T00:00:00Z",
|
||||
"tags": "วาล์ว"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
15
src/content.config.ts
Normal file
15
src/content.config.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { defineCollection, z } from 'astro:content';
|
||||
import { glob } from 'astro/loaders';
|
||||
|
||||
const blog = defineCollection({
|
||||
loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
|
||||
schema: z.object({
|
||||
title: z.string(),
|
||||
excerpt: z.string(),
|
||||
featured_image: z.string().optional(),
|
||||
published_at: z.coerce.date(),
|
||||
tags: z.array(z.string()).optional(),
|
||||
}),
|
||||
});
|
||||
|
||||
export const collections = { blog };
|
||||
50
src/content/blog/pipe-knowledge.md
Normal file
50
src/content/blog/pipe-knowledge.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: "ความรู้เกี่ยวกับท่อ PPR สำหรับระบบน้ำ"
|
||||
excerpt: "ท่อ PPR เป็นวัสดุที่นิยมใช้ในระบบประปาและการเดินท่อน้ำร้อน-น้ำเย็น เนื่องจากมีคุณสมบัติที่เหมาะสมและอายุการใช้งานยาวนาน"
|
||||
featured_image: "/images/hdpe001-page1.jpg"
|
||||
published_at: 2025-02-01
|
||||
tags: ["ท่อ PPR", "ระบบน้ำ", "ความรู้"]
|
||||
---
|
||||
|
||||
# ความรู้เกี่ยวกับท่อ PPR
|
||||
|
||||
**ท่อ PPR (Polypropylene Random Copolymer)** เป็นท่อพลาสติกคุณภาพสูงที่ได้รับความนิยมอย่างแพร่หลายในงานระบบประปา เนื่องจากมีคุณสมบัติที่เหมาะสมกับการใช้งานทั้งน้ำร้อนและน้ำเย็น
|
||||
|
||||
## คุณสมบัติเด่นของท่อ PPR
|
||||
|
||||
### 1. ทนความร้อนสูง
|
||||
- ทนอุณหภูมิได้ถึง **95°C**
|
||||
- เหมาะสำหรับงานน้ำร้อนและระบบทำความร้อน
|
||||
|
||||
### 2. อายุการใช้งานยาวนาน
|
||||
- มากกว่า **50 ปี** เมื่อใช้งานตามมาตรฐาน
|
||||
- ทนต่อการกัดกร่อนจากสารเคมี
|
||||
|
||||
### 3. Food Grade ปลอดภัย
|
||||
- ไม่มีสารโลหะหนักปนเปื้อน
|
||||
- เหมาะสำหรับระบบน้ำดื่ม
|
||||
|
||||
### 4. น้ำหนักเบา ติดตั้งง่าย
|
||||
- เบากว่าท่อเหล็กหลายเท่า
|
||||
- ประหยัดค่าแรงและเวลา
|
||||
|
||||
## มาตรฐานการผลิต
|
||||
|
||||
ท่อ PPR ที่มีคุณภาพต้องผ่านมาตรฐาน:
|
||||
- **DIN 8077 / DIN 8078** (มาตรฐานเยอรมัน)
|
||||
- **ISO 15874** (มาตรฐานสากล)
|
||||
- **มอก.** สำหรับผลิตภัณฑ์ในประเทศไทย
|
||||
|
||||
## การเลือกขนาดท่อ PPR
|
||||
|
||||
| ขนาดท่อ (mm) | ขนาด (นิ้ว) | การใช้งาน |
|
||||
|---|---|---|
|
||||
| 20 | 1/2" | ท่อน้ำดื่มในบ้าน |
|
||||
| 25 | 3/4" | ท่อน้ำทั่วไป |
|
||||
| 32 | 1" | ท่อเมนเข้าบ้าน |
|
||||
| 40-50 | 1.5"-2" | ท่อเมนอาคาร |
|
||||
| 63+ | 2.5"+ | ท่อเมนโรงงาน |
|
||||
|
||||
## สรุป
|
||||
|
||||
ท่อ PPR เป็นตัวเลือกที่คุ้มค่าสำหรับระบบน้ำทั้งในบ้านและอาคาร ด้วยคุณสมบัติที่เหนือกว่าท่อโลหะในหลายด้าน และอายุการใช้งานที่ยาวนาน
|
||||
60
src/content/blog/valve-guide.md
Normal file
60
src/content/blog/valve-guide.md
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: "ประเภทของวาล์วที่ใช้ในระบบน้ำ"
|
||||
excerpt: "วาล์วเป็นอุปกรณ์สำคัญในระบบท่อที่ใช้ควบคุมการไหลของน้ำ เลือกใช้วาล์วให้ถูกประเภทตามการใช้งานจะช่วยยืดอายุและลดค่าใช้จ่ายในการบำรุงรักษา"
|
||||
featured_image: "/images/valve-In01.jpg"
|
||||
published_at: 2025-02-15
|
||||
tags: ["วาล์ว", "ระบบน้ำ", "ความรู้"]
|
||||
---
|
||||
|
||||
# ประเภทของวาล์วที่ใช้ในระบบน้ำ
|
||||
|
||||
**วาล์ว (Valve)** เป็นอุปกรณ์สำคัญที่สุดในระบบท่อ ใช้สำหรับควบคุมการไหล การเปิด-ปิด และการปรับแรงดันของน้ำ การเลือกวาล์วที่เหมาะสมกับการใช้งานเป็นสิ่งสำคัญมาก
|
||||
|
||||
## 1. Ball Valve (วาล์วบอล)
|
||||
|
||||
วาล์วที่ใช้ลูกบอลเจาะรูเปิด-ปิด เหมาะสำหรับ:
|
||||
- ใช้งานทั่วไปในระบบประปา
|
||||
- เปิด-ปิดเร็ว
|
||||
- ปิดสนิท ไม่รั่วซึม
|
||||
|
||||
## 2. Gate Valve (วาล์วประตูน้ำ)
|
||||
|
||||
วาล์วที่ใช้ประตูเลื่อนขึ้น-ลง:
|
||||
- เหมาะกับงานที่ต้องเปิด-ปิดเต็มที่
|
||||
- แรงดันตกต่ำ
|
||||
- ใช้ในท่อเมนขนาดใหญ่
|
||||
|
||||
## 3. Check Valve (วาล์วกันกลับ)
|
||||
|
||||
ป้องกันน้ำไหลย้อนกลับ:
|
||||
- ใช้ในระบบปั๊มน้ำ
|
||||
- ป้องกันน้ำท่วม
|
||||
- ป้องกันการปนเปื้อน
|
||||
|
||||
## 4. Butterfly Valve (วาล์วผีเสื้อ)
|
||||
|
||||
วาล์วที่ใช้แผ่นโลหะหมุน:
|
||||
- เหมาะกับท่อขนาดใหญ่
|
||||
- น้ำหนักเบา
|
||||
- ติดตั้งง่าย
|
||||
|
||||
## 5. Globe Valve (วาล์วโกลบ์)
|
||||
|
||||
วาล์วสำหรับปรับค่าการไหล:
|
||||
- ควบคุมอัตราการไหลได้แม่นยำ
|
||||
- ใช้ในระบบที่ต้องการความเที่ยงตรง
|
||||
- แรงดันตกสูง
|
||||
|
||||
## การเลือกวาล์วที่เหมาะสม
|
||||
|
||||
| การใช้งาน | วาล์วแนะนำ |
|
||||
|---|---|
|
||||
| ท่อน้ำดื่มในบ้าน | Ball Valve |
|
||||
| ท่อเมนอาคาร | Gate Valve |
|
||||
| ระบบปั๊มน้ำ | Check Valve |
|
||||
| ท่อขนาดใหญ่ | Butterfly Valve |
|
||||
| ระบบควบคุมอัตราการไหล | Globe Valve |
|
||||
|
||||
## สรุป
|
||||
|
||||
การเลือกวาล์วที่ถูกต้องตามการใช้งานจะช่วยให้ระบบทำงานได้อย่างมีประสิทธิภาพ ลดปัญหาการรั่วซึม และยืดอายุการใช้งานของระบบทั้งหมด
|
||||
36
src/content/blog/welcome-post.md
Normal file
36
src/content/blog/welcome-post.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "ยินดีต้อนรับสู่บล็อกดีล พลัส เทค"
|
||||
excerpt: "บทความแรกของดีล พลัส เทค พบกับความรู้และข้อมูลที่เป็นประโยชน์เกี่ยวกับระบบน้ำ ท่อ และอุปกรณ์ต่างๆ"
|
||||
featured_image: "/images/logo.png"
|
||||
published_at: 2025-01-15
|
||||
tags: ["ทั่วไป", "แนะนำ"]
|
||||
---
|
||||
|
||||
ยินดีต้อนรับสู่บล็อกของ **ดีล พลัส เทค** ครับ
|
||||
|
||||
ที่นี่คุณจะได้พบกับความรู้ คำแนะนำ และข้อมูลที่เป็นประโยชน์เกี่ยวกับ:
|
||||
|
||||
- ระบบน้ำประปา
|
||||
- ท่อ PPR, HDPE, UPVC และท่อเหล็ก
|
||||
- ปั๊มน้ำและอุปกรณ์
|
||||
- วาล์วและข้อต่อ
|
||||
- ฉนวนกันความร้อน
|
||||
- ระบบดับเพลิง
|
||||
|
||||
## เกี่ยวกับดีล พลัส เทค
|
||||
|
||||
**บริษัท ดีล พลัส เทค จำกัด** เป็นผู้นำเข้าและจัดจำหน่ายสินค้าระบบน้ำคุณภาพสูงจากโรงงาน ด้วยประสบการณ์กว่า 10 ปี เราพร้อมให้คำปรึกษาและจัดส่งสินค้าถึงมือคุณ
|
||||
|
||||
### บริการของเรา
|
||||
|
||||
- **สินค้าระบบน้ำ** — ท่อ PPR ท่อ HDPE อุปกรณ์วาล์ว
|
||||
- **อุปกรณ์ปรับอากาศ** — กริลแอร์ หัวจ่ายแอร์
|
||||
- **ระบบรั้ว** — รั้วเทวดา ระบบรั้วไวน์แมน
|
||||
|
||||
### ติดต่อเรา
|
||||
|
||||
- **โทร:** 090-555-1415
|
||||
- **LINE:** @JPPSELECTION
|
||||
- **อีเมล:** dealplustech@gmail.com
|
||||
|
||||
หวังว่าบทความของเราจะเป็นประโยชน์กับท่านครับ
|
||||
@@ -49,6 +49,7 @@ const categories = [
|
||||
subcategories: [
|
||||
{ name: 'กริลแอร์', slug: '/grilles' },
|
||||
{ name: 'DURGO วาล์วเติมอากาศ', slug: '/durgo-avvs' },
|
||||
{ name: 'หัวจ่ายแอร์ Ball Jet', slug: '/หัวจ่าย-ball-jet' },
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
import { defineLiveCollection } from 'astro:content'
|
||||
import { emdashLoader } from 'emdash/runtime'
|
||||
|
||||
export const collections = {
|
||||
_emdash: defineLiveCollection({ loader: emdashLoader() }),
|
||||
}
|
||||
@@ -1,13 +1,10 @@
|
||||
---
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import { getEmDashCollection } from 'emdash';
|
||||
import { getCollection } from 'astro:content';
|
||||
|
||||
const { entries: articles, cacheHint } = await getEmDashCollection('blog', {
|
||||
limit: 3,
|
||||
orderBy: { published_at: 'desc' },
|
||||
status: 'published',
|
||||
});
|
||||
Astro.cache.set(cacheHint);
|
||||
const articles = (await getCollection('blog')).sort(
|
||||
(a, b) => b.data.published_at.getTime() - a.data.published_at.getTime()
|
||||
).slice(0, 3);
|
||||
---
|
||||
|
||||
<BaseLayout title="ดีล พลัส เทค - ระบบน้ำคุณภาพสูง ราคาโรงงาน" description="ดีล พลัส เทค จำกัด ผู้นำด้านระบบน้ำคุณภาพสูง ราคาโรงงาน ท่อ PPR ท่อ HDPE อุปกรณ์วาล์ว ปั๊มน้ำ เครื่องเชื่อมท่อ และอุปกรณ์โรงงานคุณภาพ">
|
||||
@@ -114,9 +111,6 @@ Astro.cache.set(cacheHint);
|
||||
<!-- Card 3 - Large, center front -->
|
||||
<div class="absolute top-32 left-1/2 -translate-x-1/2 w-52 lg:w-72 rounded-2xl shadow-2xl overflow-hidden animate-float-delayed-2 glass-strong tilt-card z-10">
|
||||
<img src="/images/products-cropped/grilles_000C.jpg" alt="กริลแอร์" class="w-full h-full object-cover" loading="lazy" />
|
||||
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/60 to-transparent p-4">
|
||||
<p class="text-white font-medium">กริลแอร์คุณภาพสูง</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Decorative Elements -->
|
||||
@@ -330,49 +324,43 @@ Astro.cache.set(cacheHint);
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{
|
||||
articles.length > 0 ? articles.map(article => (
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(article.data.slug || article.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<div class="aspect-[16/9] bg-slate-100 overflow-hidden">
|
||||
{
|
||||
(() => {
|
||||
const img = article.data.featured_image;
|
||||
const imgSrc = typeof img === 'string' ? img : img?.src || (img?.provider === 'local' && (img?.meta?.storageKey || img?.id) ? `/_emdash/api/media/file/${img.meta?.storageKey || img.id}` : null);
|
||||
const imgAlt = typeof img === 'object' && img?.alt ? img.alt : article.data.title;
|
||||
return imgSrc ? (
|
||||
<img src={imgSrc} alt={imgAlt} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-16 h-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
})()
|
||||
}
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<div class="flex items-center gap-3 text-sm text-slate-500 mb-3">
|
||||
<time datetime={article.data.publishedAt}>{new Date(article.data.publishedAt).toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}</time>
|
||||
{article.data.tags && (
|
||||
<span class="px-2.5 py-0.5 bg-primary-50 text-primary-600 rounded-full text-xs font-medium">{article.data.tags}</span>
|
||||
)}
|
||||
{articles.length > 0 && articles.map(article => (
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(article.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<div class="aspect-[16/9] bg-slate-100 overflow-hidden">
|
||||
{article.data.featured_image ? (
|
||||
<img src={article.data.featured_image} alt={article.data.title} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-16 h-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-slate-900 group-hover:text-primary-600 transition-colors mb-2 line-clamp-2">{article.data.title}</h3>
|
||||
<p class="text-sm text-slate-600 line-clamp-2">{article.data.excerpt}</p>
|
||||
</div>
|
||||
</a>
|
||||
)) : (
|
||||
<div class="md:col-span-2 lg:col-span-3 text-center py-16">
|
||||
<div class="text-slate-300 mb-4">
|
||||
<svg class="w-16 h-16 mx-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<p class="text-lg text-slate-400">ยังไม่มีบทความในขณะนี้</p>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
<div class="p-6">
|
||||
<div class="flex items-center gap-3 text-sm text-slate-500 mb-3">
|
||||
<time datetime={article.data.published_at.toISOString().slice(0, 10)}>
|
||||
{article.data.published_at.toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}
|
||||
</time>
|
||||
{article.data.tags?.[0] && (
|
||||
<span class="px-2.5 py-0.5 bg-primary-50 text-primary-600 rounded-full text-xs font-medium">{article.data.tags[0]}</span>
|
||||
)}
|
||||
</div>
|
||||
<h3 class="text-lg font-bold text-slate-900 group-hover:text-primary-600 transition-colors mb-2 line-clamp-2">{article.data.title}</h3>
|
||||
<p class="text-sm text-slate-600 line-clamp-2">{article.data.excerpt}</p>
|
||||
</div>
|
||||
</a>
|
||||
))}
|
||||
{articles.length === 0 && (
|
||||
<div class="md:col-span-2 lg:col-span-3 text-center py-16">
|
||||
<div class="text-slate-300 mb-4">
|
||||
<svg class="w-16 h-16 mx-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<p class="text-lg text-slate-400">ยังไม่มีบทความในขณะนี้</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div class="text-center mt-10 sm:hidden">
|
||||
|
||||
@@ -11,10 +11,10 @@ import StickyBottomCTA from '@/components/common/StickyBottomCTA.astro';
|
||||
"@type": "Product",
|
||||
"name": "Realflex | สายอ่อนสแตนเลส",
|
||||
"description": "จำหน่ายRealflex สายอ่อนสแตนเลสคุณภาพสูง ราคาโรงงาน ส่งฟรี กทม. ปริมณฑล",
|
||||
"image": "https://dealplustech.co.th/images/products-cropped/realflex_000C.jpg",
|
||||
"image": "/images/products-cropped/realflex_000C.jpg",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/realflex",
|
||||
"url": "https://dealplustech.com/realflex",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ import StickyBottomCTA from '@/components/common/StickyBottomCTA.astro';
|
||||
"@type": "Product",
|
||||
"name": "ระบบกรองน้ำ Water Treatment",
|
||||
"description": "จำหน่ายระบบกรองน้ำดี (Water Treatment) คุณภาพสูง ราคาโรงงาน ส่งฟรี กทม. ปริมณฑล",
|
||||
"image": "https://dealplustech.co.th/images/products-cropped/water-treatment_000C.jpg",
|
||||
"image": "/images/products-cropped/water-treatment_000C.jpg",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/water-treatment",
|
||||
"url": "https://dealplustech.com/water-treatment",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
@@ -78,6 +78,12 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</svg>
|
||||
090-555-1415
|
||||
</a>
|
||||
<a href="#pricelist" data-price-button class="hidden bg-white text-primary-700 hover:bg-primary-50 py-3 px-6 rounded-xl font-semibold flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
</svg>
|
||||
<span>ราคาสินค้า</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:sticky lg:top-24">
|
||||
@@ -128,6 +134,24 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricelist -->
|
||||
<section id="pricelist" class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-lg mx-auto text-center">
|
||||
<h2 class="text-xl font-bold mb-6">📥 ดาวน์โหลดราคาสินค้า ท่อ HDPE</h2>
|
||||
<a href="/documents/Price List HDPE TAP.pdf" target="_blank" class="inline-flex items-center gap-4 p-4 bg-white rounded-xl shadow-sm hover:shadow-md transition-shadow text-left">
|
||||
<svg class="w-8 h-8 text-red-600 flex-shrink-0" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm-1 9V3.5L18.5 9H13zM8 13h8v2H8v-2zm0 4h8v2H8v-2zm0-8h2v2H8V9z" />
|
||||
</svg>
|
||||
<div>
|
||||
<div class="font-medium text-slate-900">Price List HDPE TAP</div>
|
||||
<div class="text-sm text-slate-500">PDF Document</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||
|
||||
@@ -78,6 +78,12 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</svg>
|
||||
090-555-1415
|
||||
</a>
|
||||
<a href="#pricelist" data-price-button class="hidden bg-white text-primary-700 hover:bg-primary-50 py-3 px-6 rounded-xl font-semibold flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
</svg>
|
||||
<span>ราคาสินค้า</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:sticky lg:top-24">
|
||||
@@ -120,6 +126,24 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricelist -->
|
||||
<section id="pricelist" class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-lg mx-auto text-center">
|
||||
<h2 class="text-xl font-bold mb-6">📥 ดาวน์โหลดราคาสินค้า ท่อ PPR ตราช้าง (SCG)</h2>
|
||||
<a href="/documents/เอสซีเจ ปี68.pdf" target="_blank" class="inline-flex items-center gap-4 p-4 bg-white rounded-xl shadow-sm hover:shadow-md transition-shadow text-left">
|
||||
<svg class="w-8 h-8 text-red-600 flex-shrink-0" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm-1 9V3.5L18.5 9H13zM8 13h8v2H8v-2zm0 4h8v2H8v-2zm0-8h2v2H8V9z" />
|
||||
</svg>
|
||||
<div>
|
||||
<div class="font-medium text-slate-900">เอสซีเจ ปี68</div>
|
||||
<div class="text-sm text-slate-500">PDF Document</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||
|
||||
@@ -78,6 +78,12 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</svg>
|
||||
090-555-1415
|
||||
</a>
|
||||
<a href="#pricelist" data-price-button class="hidden bg-white text-primary-700 hover:bg-primary-50 py-3 px-6 rounded-xl font-semibold flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
</svg>
|
||||
<span>ราคาสินค้า</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:sticky lg:top-24">
|
||||
@@ -139,6 +145,24 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricelist -->
|
||||
<section id="pricelist" class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-lg mx-auto text-center">
|
||||
<h2 class="text-xl font-bold mb-6">📥 ดาวน์โหลดราคาสินค้า ไทยพีพีอาร์</h2>
|
||||
<a href="/documents/PRICE-LIST_TPPR_V28-2023 [26012023].pdf" target="_blank" class="inline-flex items-center gap-4 p-4 bg-white rounded-xl shadow-sm hover:shadow-md transition-shadow text-left">
|
||||
<svg class="w-8 h-8 text-red-600 flex-shrink-0" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm-1 9V3.5L18.5 9H13zM8 13h8v2H8v-2zm0 4h8v2H8v-2zm0-8h2v2H8V9z" />
|
||||
</svg>
|
||||
<div>
|
||||
<div class="font-medium text-slate-900">PRICE-LIST_TPPR_V28-2023</div>
|
||||
<div class="text-sm text-slate-500">PDF Document</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||
|
||||
@@ -51,6 +51,12 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
<div class="flex flex-wrap gap-4">
|
||||
<a href="/contact-us" class="bg-accent-500 hover:bg-accent-600 text-white py-3 px-6 rounded-xl font-semibold">สอบถามราคา</a>
|
||||
<a href="https://line.me/ti/p/~JPPSELECTION" target="_blank" rel="noopener" class="bg-white/10 hover:bg-white/20 text-white py-3 px-6 rounded-xl font-semibold border border-white/30">แอดไลน์</a>
|
||||
<a href="#pricelist" data-price-button class="hidden bg-white/10 hover:bg-white/20 text-white py-3 px-6 rounded-xl font-semibold border border-white/30 flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||
</svg>
|
||||
<span>ราคาสินค้า</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -241,6 +247,24 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricelist -->
|
||||
<section id="pricelist" class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-lg mx-auto text-center">
|
||||
<h2 class="text-xl font-bold mb-6">📥 ดาวน์โหลดราคาสินค้า ท่อ XYLENT</h2>
|
||||
<a href="/documents/Price List XYLENT_Novat_V12-2022 [080265]_220727_155718 (1).pdf" target="_blank" class="inline-flex items-center gap-4 p-4 bg-white rounded-xl shadow-sm hover:shadow-md transition-shadow text-left">
|
||||
<svg class="w-8 h-8 text-red-600 flex-shrink-0" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm-1 9V3.5L18.5 9H13zM8 13h8v2H8v-2zm0 4h8v2H8v-2zm0-8h2v2H8V9z" />
|
||||
</svg>
|
||||
<div>
|
||||
<div class="font-medium text-slate-900">Price List XYLENT_Novat_V12-2022</div>
|
||||
<div class="text-sm text-slate-500">PDF Document</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white text-center relative overflow-hidden">
|
||||
<div class="max-w-4xl mx-auto px-4">
|
||||
|
||||
@@ -1,23 +1,31 @@
|
||||
---
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import { getEmDashEntry, getEmDashCollection } from 'emdash';
|
||||
import { PortableText, Image } from 'emdash/ui';
|
||||
import { getCollection, render } from 'astro:content';
|
||||
|
||||
const { slug } = Astro.params;
|
||||
const { entry: article, cacheHint } = await getEmDashEntry('blog', slug);
|
||||
Astro.cache.set(cacheHint);
|
||||
|
||||
if (!article) {
|
||||
return Astro.redirect('/404');
|
||||
export async function getStaticPaths() {
|
||||
const articles = await getCollection('blog');
|
||||
return articles.map(article => ({
|
||||
params: { slug: article.id },
|
||||
props: { article },
|
||||
}));
|
||||
}
|
||||
|
||||
// Get related articles (same tags, excluding current)
|
||||
const { entries: relatedArticles } = await getEmDashCollection('blog', {
|
||||
limit: 3,
|
||||
orderBy: { published_at: 'desc' },
|
||||
status: 'published',
|
||||
});
|
||||
const related = relatedArticles.filter(a => a.id !== article.id).slice(0, 3);
|
||||
const { article } = Astro.props;
|
||||
const { Content } = await render(article);
|
||||
|
||||
// Get related articles (same tags first, then by date, excluding current)
|
||||
const allArticles = await getCollection('blog');
|
||||
const related = allArticles
|
||||
.filter(a => a.id !== article.id)
|
||||
.sort((a, b) => {
|
||||
const aTagMatch = a.data.tags?.some(t => article.data.tags?.includes(t)) ? 1 : 0;
|
||||
const bTagMatch = b.data.tags?.some(t => article.data.tags?.includes(t)) ? 1 : 0;
|
||||
if (aTagMatch !== bTagMatch) return bTagMatch - aTagMatch;
|
||||
return b.data.published_at.getTime() - a.data.published_at.getTime();
|
||||
})
|
||||
.slice(0, 3);
|
||||
|
||||
const tag = article.data.tags?.[0] ?? '';
|
||||
---
|
||||
|
||||
<BaseLayout title={`${article.data.title} - ดีล พลัส เทค`} description={article.data.excerpt || `บทความ ${article.data.title}`}>
|
||||
@@ -39,49 +47,38 @@ const related = relatedArticles.filter(a => a.id !== article.id).slice(0, 3);
|
||||
<section class="py-12 lg:py-16">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="mb-8">
|
||||
{article.data.tags && (
|
||||
<span class="inline-block px-3 py-1 bg-primary-50 text-primary-600 rounded-full text-sm font-medium mb-4">{article.data.tags}</span>
|
||||
{tag && (
|
||||
<span class="inline-block px-3 py-1 bg-primary-50 text-primary-600 rounded-full text-sm font-medium mb-4">{tag}</span>
|
||||
)}
|
||||
<h1 class="text-3xl sm:text-4xl lg:text-5xl font-bold text-slate-900 mb-4 leading-tight">{article.data.title}</h1>
|
||||
<div class="flex items-center gap-4 text-slate-500">
|
||||
<time datetime={article.data.publishedAt} class="text-lg">
|
||||
{new Date(article.data.publishedAt).toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}
|
||||
<time datetime={article.data.published_at.toISOString().slice(0, 10)} class="text-lg">
|
||||
{article.data.published_at.toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}
|
||||
</time>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Featured Image */}
|
||||
{
|
||||
(() => {
|
||||
const img = article.data.featured_image;
|
||||
const imgSrc = typeof img === 'string' ? img : img?.src || (img?.provider === 'local' && (img?.meta?.storageKey || img?.id) ? `/_emdash/api/media/file/${img.meta?.storageKey || img.id}` : null);
|
||||
const imgAlt = typeof img === 'object' && img?.alt ? img.alt : article.data.title;
|
||||
return imgSrc ? (
|
||||
<div class="rounded-3xl overflow-hidden mb-12 shadow-lg">
|
||||
<img src={imgSrc} alt={imgAlt} class="w-full h-auto" />
|
||||
</div>
|
||||
) : null;
|
||||
})()
|
||||
}
|
||||
{article.data.featured_image && (
|
||||
<div class="rounded-3xl overflow-hidden mb-12 shadow-lg">
|
||||
<img src={article.data.featured_image} alt={article.data.title} class="w-full h-auto" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Article Body */}
|
||||
<article class="prose prose-lg max-w-none prose-headings:text-slate-900 prose-a:text-primary-600 prose-img:rounded-2xl prose-img:shadow-md mb-16">
|
||||
{article.data.body ? (
|
||||
<PortableText value={article.data.body} />
|
||||
) : (
|
||||
<p class="text-slate-500 italic">ไม่มีเนื้อหา</p>
|
||||
)}
|
||||
<Content />
|
||||
</article>
|
||||
|
||||
{/* Share Buttons */}
|
||||
<div class="border-t border-slate-100 pt-8 mb-8">
|
||||
<div class="flex items-center gap-4">
|
||||
<span class="text-sm font-medium text-slate-700">แชร์บทความ:</span>
|
||||
<a href={`https://line.me/R/msg/text/?${encodeURIComponent(`${article.data.title} - https://dealplustech.com/${encodeURI('บทความ')}/${encodeURIComponent(article.data.slug || article.id)}`)}`} target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 bg-green-50 text-green-600 rounded-xl hover:bg-green-100 transition-colors text-sm font-medium">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.344.282-.629.627-.629h2.386c.349 0 .63.285.63.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.629.63-.629.345 0 .63.284.63.629v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.629.627-.629.349 0 .631.284.631.629v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.629.63-.629.348 0 .63.284.63.629v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/></svg>
|
||||
<a href={`https://line.me/R/msg/text/?${encodeURIComponent(`${article.data.title} - https://dealplustech.com/${encodeURI('บทความ')}/${encodeURIComponent(article.id)}`)}`} target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 bg-green-50 text-green-600 rounded-xl hover:bg-green-100 transition-colors text-sm font-medium">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.344.282-.629.627-.629h2.386c.349 0 .63.285.63.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.629.63-.629.345 0 .63.284.63.629v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.629.627-.629.349 0 .631.284.631.629v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.629.63-.629.348 0 .63.284.63.629v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 18.062 24 10.314\"/></svg>
|
||||
Line
|
||||
</a>
|
||||
<a href={`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(`https://dealplustech.com/${encodeURI('บทความ')}/${encodeURIComponent(article.data.slug || article.id)}`)}`} target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 bg-blue-50 text-blue-600 rounded-xl hover:bg-blue-100 transition-colors text-sm font-medium">
|
||||
<a href={`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(`https://dealplustech.com/${encodeURI('บทความ')}/${encodeURIComponent(article.id)}`)}`} target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 bg-blue-50 text-blue-600 rounded-xl hover:bg-blue-100 transition-colors text-sm font-medium">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
|
||||
Facebook
|
||||
</a>
|
||||
@@ -97,24 +94,17 @@ const related = relatedArticles.filter(a => a.id !== article.id).slice(0, 3);
|
||||
<h2 class="text-2xl font-bold text-slate-900 mb-8">บทความที่เกี่ยวข้อง</h2>
|
||||
<div class="grid md:grid-cols-3 gap-8">
|
||||
{related.map(rel => (
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(rel.data.slug || rel.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(rel.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<div class="aspect-[16/9] bg-slate-100 overflow-hidden">
|
||||
{
|
||||
(() => {
|
||||
const img = rel.data.featured_image;
|
||||
const imgSrc = typeof img === 'string' ? img : img?.src || (img?.provider === 'local' && (img?.meta?.storageKey || img?.id) ? `/_emdash/api/media/file/${img.meta?.storageKey || img.id}` : null);
|
||||
const imgAlt = typeof img === 'object' && img?.alt ? img.alt : rel.data.title;
|
||||
return imgSrc ? (
|
||||
<img src={imgSrc} alt={imgAlt} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-12 h-12" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
})()
|
||||
}
|
||||
{rel.data.featured_image ? (
|
||||
<img src={rel.data.featured_image} alt={rel.data.title} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-12 h-12" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<h3 class="text-base font-bold text-slate-900 group-hover:text-primary-600 transition-colors mb-2 line-clamp-2">{rel.data.title}</h3>
|
||||
|
||||
@@ -1,19 +1,10 @@
|
||||
---
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
import { getEmDashCollection } from 'emdash';
|
||||
import { getCollection } from 'astro:content';
|
||||
|
||||
const page = Astro.url.searchParams.get('page') || '1';
|
||||
const limit = 9;
|
||||
const offset = (parseInt(page) - 1) * limit;
|
||||
|
||||
const { entries: articles, nextCursor, cacheHint } = await getEmDashCollection('blog', {
|
||||
limit,
|
||||
orderBy: { published_at: 'desc' },
|
||||
status: 'published',
|
||||
});
|
||||
Astro.cache.set(cacheHint);
|
||||
|
||||
const totalPages = nextCursor ? null : 1; // Simple pagination
|
||||
const articles = (await getCollection('blog')).sort(
|
||||
(a, b) => b.data.published_at.getTime() - a.data.published_at.getTime()
|
||||
);
|
||||
---
|
||||
|
||||
<BaseLayout title="บทความทั้งหมด - ดีล พลัส เทค" description="รวมบทความและความรู้เกี่ยวกับระบบน้ำ ท่อ และอุปกรณ์ต่างๆ จากดีล พลัส เทค">
|
||||
@@ -32,54 +23,47 @@ const totalPages = nextCursor ? null : 1; // Simple pagination
|
||||
<!-- Articles Grid -->
|
||||
<section class="py-16 lg:py-24">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
{
|
||||
articles.length > 0 ? (
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{articles.map(article => (
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(article.data.slug || article.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<div class="aspect-[16/9] bg-slate-100 overflow-hidden">
|
||||
{
|
||||
(() => {
|
||||
const img = article.data.featured_image;
|
||||
const imgSrc = typeof img === 'string' ? img : img?.src || (img?.provider === 'local' && (img?.meta?.storageKey || img?.id) ? `/_emdash/api/media/file/${img.meta?.storageKey || img.id}` : null);
|
||||
const imgAlt = typeof img === 'object' && img?.alt ? img.alt : article.data.title;
|
||||
return imgSrc ? (
|
||||
<img src={imgSrc} alt={imgAlt} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-16 h-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
})()
|
||||
}
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<div class="flex items-center gap-3 text-sm text-slate-500 mb-3">
|
||||
<time datetime={article.data.publishedAt}>{new Date(article.data.publishedAt).toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}</time>
|
||||
{article.data.tags && (
|
||||
<span class="px-2.5 py-0.5 bg-primary-50 text-primary-600 rounded-full text-xs font-medium">{article.data.tags}</span>
|
||||
)}
|
||||
{articles.length > 0 ? (
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{articles.map(article => (
|
||||
<a href={`/${encodeURI('บทความ')}/${encodeURIComponent(article.id)}`} class="group block bg-white rounded-3xl overflow-hidden border border-slate-100 hover:border-primary-200 hover:shadow-xl transition-all duration-300">
|
||||
<div class="aspect-[16/9] bg-slate-100 overflow-hidden">
|
||||
{article.data.featured_image ? (
|
||||
<img src={article.data.featured_image} alt={article.data.title} class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" loading="lazy" />
|
||||
) : (
|
||||
<div class="w-full h-full flex items-center justify-center text-slate-300">
|
||||
<svg class="w-16 h-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h2 class="text-lg font-bold text-slate-900 group-hover:text-primary-600 transition-colors mb-2 line-clamp-2">{article.data.title}</h2>
|
||||
<p class="text-sm text-slate-600 line-clamp-2">{article.data.excerpt}</p>
|
||||
)}
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<div class="flex items-center gap-3 text-sm text-slate-500 mb-3">
|
||||
<time datetime={article.data.published_at.toISOString().slice(0, 10)}>
|
||||
{article.data.published_at.toLocaleDateString('th-TH', { year: 'numeric', month: 'long', day: 'numeric' })}
|
||||
</time>
|
||||
{article.data.tags?.[0] && (
|
||||
<span class="px-2.5 py-0.5 bg-primary-50 text-primary-600 rounded-full text-xs font-medium">{article.data.tags[0]}</span>
|
||||
)}
|
||||
</div>
|
||||
</a>
|
||||
))}
|
||||
<h2 class="text-lg font-bold text-slate-900 group-hover:text-primary-600 transition-colors mb-2 line-clamp-2">{article.data.title}</h2>
|
||||
<p class="text-sm text-slate-600 line-clamp-2">{article.data.excerpt}</p>
|
||||
</div>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
<div class="text-center py-16">
|
||||
<div class="text-slate-300 mb-4">
|
||||
<svg class="w-16 h-16 mx-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
) : (
|
||||
<div class="text-center py-16">
|
||||
<div class="text-slate-300 mb-4">
|
||||
<svg class="w-16 h-16 mx-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<p class="text-xl text-slate-400 mb-2">ยังไม่มีบทความ</p>
|
||||
<p class="text-slate-400">กลับมาตรวจสอบอีกครั้งในภายหลัง</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
<p class="text-xl text-slate-400 mb-2">ยังไม่มีบทความ</p>
|
||||
<p class="text-slate-400">กลับมาตรวจสอบอีกครั้งในภายหลัง</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
@@ -11,10 +11,10 @@ import StickyBottomCTA from '@/components/common/StickyBottomCTA.astro';
|
||||
"@type": "Product",
|
||||
"name": "ระบบรั้วไวน์แมน Vineman รั้วตาข่าย ลวดหนาม",
|
||||
"description": "จำหน่ายระบบรั้วไวน์แมน Vineman รั้วตาข่าย ลวดหนามคุณภาพสูง ราคาโรงงาน ส่งฟรี กทม. ปริมณฑล",
|
||||
"image": "https://dealplustech.co.th/images/products-raw/vineman/ระบบรั้วไวน์แมน-Vineman-e1613286324569-1024x880.svg",
|
||||
"image": "/images/products-raw/vineman/ระบบรั้วไวน์แมน-Vineman-e1613286324569-1024x880.jpg",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/ระบบรั้วไวน์แมน-vineman-2",
|
||||
"url": "https://dealplustech.com/ระบบรั้วไวน์แมน-vineman-2",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
"@type": "Product",
|
||||
"name": "วาล์ว (Valve) - วาล์วน้ำทุกประเภท",
|
||||
"description": "จำหน่ายวาล์ว (Valve) - วาล์วน้ำทุกประเภทคุณภาพสูง ราคาโรงงาน ส่งฟรี กทม. ปริมณฑล",
|
||||
"image": "https://dealplustech.co.th/images/products-cropped/valve_000C.jpg",
|
||||
"image": "/images/products-cropped/valve_000C.jpg",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/วาล์ว-valve",
|
||||
"url": "https://dealplustech.com/วาล์ว-valve",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
251
src/pages/หัวจ่าย-ball-jet.astro
Normal file
251
src/pages/หัวจ่าย-ball-jet.astro
Normal file
@@ -0,0 +1,251 @@
|
||||
---
|
||||
import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
---
|
||||
|
||||
<BaseLayout title="หัวจ่ายแอร์ Ball Jet (Ball Spout Jet Diffuser)" description="จำหน่ายหัวจ่ายแอร์ Ball Jet (Ball Spout Jet Diffuser) ส่งลมระยะไกล ปรับทิศทาง 360° มุมปาก 45° เหมาะกับอาคารเพดานสูง สนามบิน โรงงาน ห้างสรรพสินค้า">
|
||||
<main class="bg-white min-h-screen">
|
||||
<!-- Product Hero Section -->
|
||||
<section class="relative bg-gradient-to-br from-primary-800 via-primary-700 to-primary-900 text-white py-16 lg:py-24 overflow-hidden">
|
||||
<!-- Animated Background -->
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none">
|
||||
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-gradient-to-br from-primary-400/30 via-primary-500/15 to-transparent rounded-full blur-[100px] animate-mesh-1"></div>
|
||||
|
||||
<!-- Floating Particles -->
|
||||
<div class="absolute top-1/4 left-1/4 w-2 h-2 bg-white/30 rounded-full animate-float"></div>
|
||||
<div class="absolute top-1/3 right-1/4 w-3 h-3 bg-primary-300/20 rounded-full animate-float-delayed-1"></div>
|
||||
<div class="absolute top-2/3 left-1/3 w-2 h-2 bg-primary-200/20 rounded-full animate-float-delayed-2"></div>
|
||||
|
||||
<!-- Water-inspired Waves -->
|
||||
<svg class="absolute bottom-0 left-0 w-full h-[250px] opacity-20" viewBox="0 0 1440 250" preserveAspectRatio="none">
|
||||
<path d="M0,150 Q360,50 720,150 T1440,150 L1440,250 L0,250 Z" fill="none" stroke="url(#water-gradient-hero)" stroke-width="2">
|
||||
<animate attributeName="d" dur="10s" repeatCount="indefinite" values="M0,150 Q360,50 720,150 T1440,150 L1440,250 L0,250 Z;M0,180 Q360,80 720,180 T1440,180 L1440,250 L0,250 Z;M0,150 Q360,50 720,150 T1440,150 L1440,250 L0,250 Z"/>
|
||||
</path>
|
||||
<defs>
|
||||
<linearGradient id="water-gradient-hero" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="#40916c"/>
|
||||
<stop offset="50%" stop-color="#74c69d"/>
|
||||
<stop offset="100%" stop-color="#40916c"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
<!-- Second Wave Layer -->
|
||||
<svg class="absolute bottom-0 left-0 w-full h-[200px] opacity-10" viewBox="0 0 1440 200" preserveAspectRatio="none">
|
||||
<path d="M0,100 Q240,200 480,100 T960,100 T1440,100 L1440,200 L0,200 Z" fill="none" stroke="rgba(255,255,255,0.3)" stroke-width="1">
|
||||
<animate attributeName="d" dur="15s" repeatCount="indefinite" values="M0,100 Q240,200 480,100 T960,100 T1440,100 L1440,200 L0,200 Z;M0,120 Q240,20 480,120 T960,120 T1440,120 L1440,200 L0,200 Z;M0,100 Q240,200 480,100 T960,100 T1440,100 L1440,200 L0,200 Z"/>
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="grid lg:grid-cols-2 gap-12 items-start">
|
||||
<div class="lg:sticky lg:top-24">
|
||||
<div class="rounded-2xl overflow-hidden bg-white/10 p-2">
|
||||
<img src="/images/ball-jet/ball-jet-main-hd.jpg" alt="หัวจ่ายแอร์ Ball Jet" class="w-full h-auto rounded-xl" width="1764" height="2000" loading="eager" />
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="inline-block px-4 py-1.5 bg-white/20 text-white rounded-full text-sm font-medium mb-4">หัวจ่ายแอร์</span>
|
||||
<h1 class="text-3xl sm:text-4xl lg:text-5xl font-bold mb-4">หัวจ่ายแอร์ Ball Jet (Ball Spout Jet Diffuser)</h1>
|
||||
<p class="text-lg sm:text-xl text-white/80 mb-8 leading-relaxed">
|
||||
หัวจ่ายเจ็ทกลม (Ball Spout Jet Diffuser) ออกแบบสำหรับอาคารโล่ง เพดานสูง ส่งลมระยะไกลได้โดยไม่ต้องเดินท่อลมยาว ปรับทิศทาง 360° และมุมปาก 45° เหมาะกับงานสถานที่ขนาดใหญ่ เช่น สนามบิน ห้างสรรพสินค้า โรงงาน ห้องประชุม โรงยิม
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-4 mb-8">
|
||||
<a href="https://line.me/ti/p/~JPPSELECTION" target="_blank" class="bg-accent-500 hover:bg-accent-600 text-white py-3 px-6 rounded-xl font-semibold flex items-start gap-2">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.344.282-.629.627-.629h2.386c.349 0 .63.285.63.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.629.63-.629.345 0 .63.284.63.629v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.629.627-.629.349 0 .631.284.631.629v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.629.63-.629.348 0 .63.284.63.629v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 23.458 12.458 23.458 10.314"/></svg>
|
||||
<span>แชท Line</span>
|
||||
</a>
|
||||
<a href="tel:0905551415" class="bg-white text-primary-700 hover:bg-primary-50 py-3 px-6 rounded-xl font-semibold flex items-start gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"/>
|
||||
</svg>
|
||||
<span>090-555-1415</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-6">
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>ส่งลมระยะไกล ไม่ต้องเดินท่อ</span>
|
||||
</div>
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>ปรับทิศทาง 360° + มุมปาก 45°</span>
|
||||
</div>
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>ปรับปริมาณลมได้</span>
|
||||
</div>
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>อลูมิเนียม / พลาสติก PVC</span>
|
||||
</div>
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>ขนาด 4" – 25.2"</span>
|
||||
</div>
|
||||
<div class="flex items-start gap-2 text-white/80">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
<span>ราคาโรงงาน คุ้มค่า</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Product Details -->
|
||||
<section class="py-16 bg-white">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<h2 class="text-2xl font-bold text-primary-700 mb-8">รายละเอียดสินค้า</h2>
|
||||
<div class="prose prose-lg max-w-none">
|
||||
<p class="text-lg text-neutral-700 leading-relaxed mb-6">
|
||||
<strong>หัวจ่ายแอร์ Ball Jet (Ball Spout Jet Diffuser)</strong> หรือที่เรียกกันทั่วไปว่า "หัวจ่ายเจ็ท" เป็นอุปกรณ์กระจายลมเพดานแบบกลม ออกแบบมาเพื่อ<strong>ส่งลมระยะไกล (Long Throw)</strong> ไปยังจุดเฉพาะในอาคารที่มีเพดานสูง โดยไม่จำเป็นต้องเดินท่อลมยาวลงมาให้พื้นที่ทำงาน — ช่วยลดค่าใช้จ่ายในการติดตั้งท่อและอุปกรณ์ได้อย่างมาก
|
||||
</p>
|
||||
<p class="text-lg text-neutral-700 leading-relaxed mb-6">
|
||||
ตัวหัวจ่ายมีลักษณะเป็นทรงกลมหมุนได้ (Ball) สามารถ<strong>ปรับทิศทางเป่าลมได้ 360 องศา</strong> และ<strong>ปรับมุมปากได้ถึง 45 องศา</strong> มาพร้อมปุ่มปรับปริมาณลม (Volume Control) เพื่อควบคุมทิศทางและแรงลมได้อย่างแม่นยำตามต้องการ เหมาะสำหรับการเป่าลมเฉพาะจุด (Spot Cooling) และการกระจายลมระยะกลางถึงไกล
|
||||
</p>
|
||||
<p class="text-lg text-neutral-700 leading-relaxed mb-6">
|
||||
ผลิตจาก<strong>อลูมิเนียม</strong>คุณภาพสูง (Powder-coated สีขาว RAL9010/9016) หรือ<strong>พลาสติก PVC</strong> (เหมาะกับงานที่ต้องการทนกรด ด่าง ความชื้น และสารเคมี) ให้เลือกตามการใช้งานและงบประมาณ ติดตั้งง่ายเพียงเจาะเพดานและสอดเข้าไป ไม่ต้องต่อท่อยาว — เหมาะกับอาคารสาธารณะ สนามบิน ห้างสรรพสินค้า โรงงานอุตสาหกรรม สนามกีฬา ห้องประชุม โรงละคร และพื้นที่ขนาดใหญ่ทุกประเภท
|
||||
</p>
|
||||
|
||||
<h3 class="text-xl font-bold text-primary-700 mt-8 mb-4">จุดเด่น</h3>
|
||||
<ul class="list-disc pl-6 mb-4 space-y-2 text-neutral-700">
|
||||
<li><strong>ส่งลมได้ไกล (Long Throw)</strong> — ลดค่าใช้จ่ายในการติดตั้งท่อและอุปกรณ์ เพราะไม่ต้องเดินท่อลมยาวลงมา</li>
|
||||
<li><strong>ประหยัดพื้นที่</strong> — ไม่จำเป็นต้องต่อท่อ ตัวอุปกรณ์ติดตั้งบนเพดานเท่านั้น ส่งลมโดยตรง</li>
|
||||
<li><strong>ปรับทิศทางได้ 360°</strong> — หัว Ball หมุนได้รอบทิศ ควบคุมทิศทางการกระจายลมได้แม่นยำ</li>
|
||||
<li><strong>ปรับมุมปากได้ 45°</strong> — ปรับมุมเอียงของปากจ่ายลมเพื่อกระจายลมเฉพาะจุดหรือกว้างออก</li>
|
||||
<li><strong>ปรับปริมาณลมได้</strong> — มีปุ่ม/วาล์วควบคุมปริมาณลมออกที่ตัวอุปกรณ์</li>
|
||||
<li><strong>หลากหลายวัสดุ</strong> — เลือกได้ทั้งอลูมิเนียม (แข็งแรง สวยงาม) และพลาสติก PVC (ทนสารเคมี ประหยัด)</li>
|
||||
<li><strong>หลายขนาดให้เลือก</strong> — 4", 5", 6", 8", 10", 12", 14", 16", 18", 20", 25.2" นิ้ว เพื่อให้เหมาะกับทุกขนาดห้อง</li>
|
||||
<li><strong>ติดตั้งง่าย</strong> — น้ำหนักเบา ไม่ต้องใช้เครื่องมือพิเศษ ประหยัดเวลาและค่าแรง</li>
|
||||
</ul>
|
||||
|
||||
<h3 class="text-xl font-bold text-primary-700 mt-8 mb-4">ข้อมูลจำเพาะทางเทคนิค</h3>
|
||||
<ul class="list-disc pl-6 mb-4 space-y-2 text-neutral-700">
|
||||
<li><strong>ชื่อทางเทคนิค:</strong> Ball Spout Jet Diffuser (JD Series)</li>
|
||||
<li><strong>รูปทรง:</strong> ทรงกลม ติดเพดาน (Round Ceiling Mount)</li>
|
||||
<li><strong>ทิศทางการจ่ายลม:</strong> แนวระดับหรือแนวดิ่ง (ปรับได้)</li>
|
||||
<li><strong>การปรับทิศทาง:</strong> หมุนได้ 360° + ปรับมุมปาก 45°</li>
|
||||
<li><strong>วัสดุ:</strong> อลูมิเนียม Powder-coated (RAL9010/9016) หรือ พลาสติก PVC</li>
|
||||
<li><strong>สี:</strong> ขาว (มาตรฐาน)</li>
|
||||
<li><strong>ขนาด:</strong> 4", 5", 6", 8", 10", 12", 14", 16", 18", 20", 25.2" นิ้ว</li>
|
||||
<li><strong>การติดตั้ง:</strong> เจาะเพดาน แล้วสอดตัวหัวจ่ายเข้าไป ไม่ต้องต่อท่อลมยาว</li>
|
||||
<li><strong>การใช้งาน:</strong> ติดตั้งบนเพดาน ในอาคารที่มีเพดานสูง ต้องการส่งลมระยะไกล</li>
|
||||
</ul>
|
||||
|
||||
<h3 class="text-xl font-bold text-primary-700 mt-8 mb-4">เหมาะสำหรับงาน</h3>
|
||||
<ul class="list-disc pl-6 mb-4 space-y-2 text-neutral-700">
|
||||
<li><strong>อาคารสาธารณะขนาดใหญ่</strong> — สนามบิน สถานีขนส่ง ห้างสรรพสินค้า</li>
|
||||
<li><strong>โรงงานอุตสาหกรรม</strong> — โรงงานผลิต คลังสินค้า</li>
|
||||
<li><strong>อาคารสำนักงาน</strong> — โถงต้อนรับขนาดใหญ่ ล็อบบี้</li>
|
||||
<li><strong>สถานที่จัดงาน</strong> — ห้องประชุม โรงละคร ห้องแสดงคอนเสิร์ต</li>
|
||||
<li><strong>สถานที่ออกกำลังกาย</strong> — โรงยิม สนามกีฬาในร่ม</li>
|
||||
<li><strong>พื้นที่สาธารณะอื่นๆ</strong> — สวนสนุก พิพิธภัณฑ์ ศูนย์การค้า</li>
|
||||
</ul>
|
||||
|
||||
<h3 class="text-xl font-bold text-primary-700 mt-8 mb-4">ข้อดี</h3>
|
||||
<ul class="list-disc pl-6 mb-4 space-y-2 text-neutral-700">
|
||||
<li><strong>ประหยัดค่าใช้จ่าย</strong> — ลดต้นทุนการติดตั้งเพราะไม่ต้องเดินท่อลมยาว</li>
|
||||
<li><strong>เพิ่มความสวยงาม</strong> — ไม่บดบังสายตา ทำให้พื้นที่ดูโปร่งโล่ง เรียบร้อย</li>
|
||||
<li><strong>ง่ายต่อการบำรุงรักษา</strong> — ถอดล้างทำความสะอาดได้ง่าย</li>
|
||||
<li><strong>ปรับเปลี่ยนได้ง่าย</strong> — สามารถเปลี่ยนตำแหน่งและทิศทางได้สะดวกหากมีการปรับผังห้อง</li>
|
||||
<li><strong>ประหยัดพลังงาน</strong> — ส่งลมเฉพาะจุดที่ต้องการ ไม่ต้องทำความเย็นทั้งห้อง</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Product Gallery -->
|
||||
<section class="py-16 bg-neutral-50">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<h2 class="text-2xl font-bold text-primary-700 mb-8 text-center">ภาพสินค้า หัวจ่ายแอร์ Ball Jet</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 max-w-3xl mx-auto">
|
||||
<div class="rounded-2xl overflow-hidden shadow-md bg-white">
|
||||
<img src="/images/ball-jet/ball-jet-main-hd.jpg" alt="หัวจ่ายแอร์ Ball Jet ภาพหลัก" class="w-full h-auto" width="1764" height="2000" loading="lazy" />
|
||||
</div>
|
||||
<div class="rounded-2xl overflow-hidden shadow-md bg-white">
|
||||
<img src="/images/ball-jet/ball-jet-front.jpg" alt="หัวจ่ายแอร์ Ball Jet ภาพด้านหน้า" class="w-full h-auto" width="450" height="416" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Product Dimensions and Parameters -->
|
||||
<section class="py-16 bg-white">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<h2 class="text-2xl font-bold text-primary-700 mb-8 text-center">ขนาดและพารามิเตอร์</h2>
|
||||
<div class="rounded-2xl overflow-hidden shadow-md bg-white">
|
||||
<img src="/images/ball-jet/ball-jet-specs.jpg" alt="ขนาดและพารามิเตอร์ หัวจ่ายแอร์ Ball Jet" class="w-full h-auto" width="712" height="1096" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FAQ Section -->
|
||||
<section class="py-16 bg-white">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<h2 class="text-2xl font-bold text-primary-700 mb-8">คำถามที่พบบ่อย</h2>
|
||||
<div class="space-y-4">
|
||||
<div class="bg-neutral-50 rounded-lg p-4">
|
||||
<h3 class="font-semibold text-neutral-800 mb-2">Q: หัวจ่ายแอร์ Ball Jet คืออะไร?</h3>
|
||||
<p class="text-neutral-700">Ball Jet (Ball Spout Jet Diffuser) คืออุปกรณ์กระจายลมเพดานแบบกลม ออกแบบมาเพื่อส่งลมระยะไกลไปยังจุดเฉพาะในอาคารที่มีเพดานสูง โดยไม่ต้องเดินท่อลมยาว เหมาะสำหรับ Spot Cooling และงานที่ต้องการกระจายลมเป็นจุดเฉพาะ</p>
|
||||
</div>
|
||||
<div class="bg-neutral-50 rounded-lg p-4">
|
||||
<h3 class="font-semibold text-neutral-800 mb-2">Q: เหมาะกับงานประเภทใด?</h3>
|
||||
<p class="text-neutral-700">เหมาะกับอาคารที่มีเพดานสูง ต้องการส่งลมระยะไกล เช่น สนามบิน ห้างสรรพสินค้า โรงงานอุตสาหกรรม โรงยิม ห้องประชุม โรงละคร สนามกีฬาในร่ม และพื้นที่ขนาดใหญ่ทุกประเภท</p>
|
||||
</div>
|
||||
<div class="bg-neutral-50 rounded-lg p-4">
|
||||
<h3 class="font-semibold text-neutral-800 mb-2">Q: เลือกอลูมิเนียมหรือ PVC ดี?</h3>
|
||||
<p class="text-neutral-700"><strong>อลูมิเนียม</strong> แข็งแรง ทนทาน สวยงาม เหมาะกับงานทั่วไปและงานอาคารสำนักงาน ส่วน<strong>พลาสติก PVC</strong> ทนกรด ด่าง ความชื้น และสารเคมี เหมาะกับโรงงานอุตสาหกรรม ห้องปฏิบัติการ สระว่ายน้ำ หรือพื้นที่ที่มีความชื้นสูง</p>
|
||||
</div>
|
||||
<div class="bg-neutral-50 rounded-lg p-4">
|
||||
<h3 class="font-semibold text-neutral-800 mb-2">Q: ขนาดที่เหมาะกับห้องของฉันคือ?</h3>
|
||||
<p class="text-neutral-700">ขึ้นอยู่กับขนาดพื้นที่และความสูงเพดาน โดยทั่วไป: เพดาน 3-5 เมตร ใช้ขนาด 4"-6", เพดาน 5-8 เมตร ใช้ขนาด 8"-12", เพดาน 8-12 เมตร ใช้ขนาด 14"-18", เพดาน 12 เมตรขึ้นไป ใช้ขนาด 20"-25.2" ติดต่อเราเพื่อคำปรึกษาขนาดที่เหมาะสม</p>
|
||||
</div>
|
||||
<div class="bg-neutral-50 rounded-lg p-4">
|
||||
<h3 class="font-semibold text-neutral-800 mb-2">Q: ติดตั้งยากไหม?</h3>
|
||||
<p class="text-neutral-700">ติดตั้งง่ายมาก เพียงเจาะรูเพดานตามขนาดที่ต้องการ แล้วสอดตัวหัวจ่ายเข้าไป ไม่ต้องต่อท่อลมยาว ไม่ต้องใช้เครื่องมือพิเศษ น้ำหนักเบา ติดตั้งได้รวดเร็ว ประหยัดเวลาและค่าแรง</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Contact CTA -->
|
||||
<section class="py-16 bg-gradient-to-br from-primary-700 to-primary-600 text-white relative overflow-hidden">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||
<h2 class="text-3xl font-bold mb-6">สนใจสินค้านี้?</h2>
|
||||
<p class="text-lg text-primary-100 mb-8">ติดต่อเราวันนี้ 090-555-1415 หรือแอดไลน์ @JPPSELECTION เพื่อรับคำปรึกษาและราคาพิเศษ</p>
|
||||
<div class="flex flex-wrap justify-center gap-4">
|
||||
<a href="https://line.me/ti/p/~JPPSELECTION" target="_blank" rel="noopener" class="bg-accent-500 hover:bg-accent-600 text-white py-3 px-8 rounded-xl font-semibold flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.344.282-.629.627-.629h2.386c.349 0 .63.285.63.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.629.63-.629.345 0 .63.284.63.629v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.629.627-.629.349 0 .631.284.631.629v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.629.63-.629.348 0 .63.284.63.629v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/></svg>
|
||||
แชท Line
|
||||
</a>
|
||||
<a href="tel:0905551415" class="bg-white text-primary-700 hover:bg-primary-50 py-3 px-8 rounded-xl font-semibold flex items-center gap-2">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"/>
|
||||
</svg>
|
||||
โทร 090-555-1415
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</BaseLayout>
|
||||
@@ -8,10 +8,10 @@ import BaseLayout from '@/layouts/BaseLayout.astro';
|
||||
"@type": "Product",
|
||||
"name": "เครื่องเชื่อม HDPE",
|
||||
"description": "เครื่องเชื่อมท่อ HDPE คุณภาพสูง เหมาะสำหรับงานเชื่อมท่อ HDPE ระบบประปา ระบบน้ำ งานอุตสาหกรรม ราคาพิเศษ ส่งฟรี",
|
||||
"image": "https://dealplustech.co.th/images/HDPE-welding-crop.jpg",
|
||||
"image": "/images/HDPE-welding-crop.jpg",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/เครื่องเชื่อม-hdpe",
|
||||
"url": "https://dealplustech.com/เครื่องเชื่อม-hdpe",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ import StickyBottomCTA from '@/components/common/StickyBottomCTA.astro';
|
||||
"@type": "Product",
|
||||
"name": "ฉนวนหุ้มท่อแอร์ ฉนวนหุ้มท่อน้ำ เทอร์โมเบรค (Thermobreak)",
|
||||
"description": "จำหน่ายฉนวนหุ้มท่อแอร์ ฉนวนหุ้มท่อน้ำ เทอร์โมเบรค (Thermobreak)คุณภาพสูง ราคาโรงงาน ส่งฟรี กทม. ปริมณฑล",
|
||||
"image": "https://dealplustech.co.th/images/thermobreak/thermobreak-solarblock.png",
|
||||
"image": "/images/thermobreak/thermobreak-solarblock.png",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"url": "https://dealplustech.co.th/เทอร์โมเบรค-thermobreak",
|
||||
"url": "https://dealplustech.com/เทอร์โมเบรค-thermobreak",
|
||||
"priceCurrency": "THB",
|
||||
"availability": "https://schema.org/InStock"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user