Commit Graph

25 Commits

Author SHA1 Message Date
Kunthawat Greethong
c0d8cacfbe [verified] feat: add CcooL product page and SEO fixes 2026-08-30 11:06:03 +07:00
Kunthawat Greethong
c975570bfd feat: add phone/LINE click conversion tracking (gtag + Meta Pixel)
- New component: ContactEventTracker.astro
- Fires phone_click/line_click events via gtag (Google Ads)
- Fires PhoneClick/LineClick custom events via fbq (Meta Pixel)
- Throttled 500ms, bot-filtered, pathname-tagged
- Wired into BaseLayout.astro (all pages)
2026-07-03 12:03:28 +07:00
Kunthawat Greethong
5c1d3c7ef9 Fix domain: dealplustech.com -> dealplustech.co.th
- BaseLayout.astro: siteUrl
- sitemap.xml.ts: SITE
- [slug].astro: articleUrl, ogImage, JSON-LD URLs, share links
- terms-and-conditions.astro: hardcoded URLs
2026-06-16 09:46:31 +07:00
Kunthawat Greethong
5d5e12d7e7 fix: รูปหลักบทความ plastic-grilles-guide path ถูกต้อง (blog/grilles -> grilles)
- featured_image: /images/grilles/air-grille-content.jpg
- สินค้าใหม่ SCG page 2: UBB-G, FRK-G, FRKF-G, Cylence Zandera Scenera, SUPERCOOL-G (6 รายการ)
- สินค้าใหม่ Microfiber page 2: FSF, Pipe Cover, GWPF (3 รายการ)
- รูปสินค้าใหม่ทั้งหมดจาก 3t-insulation.com
- Solar -> NO-CLAD (thermobreak-series-guide)
- Facebook icon + ชื่อ Dealplustech ที่ footer
2026-06-15 12:36:26 +07:00
Kunthawat Greethong
f5af9e46e1 fix(mobile-menu): make menu scrollable when content overflows
After adding the products dropdown (7 categories + 27 subcategory
links), the mobile menu was taller than typical phone screens
(~640px on iPhone SE). Without overflow handling, users on
short screens could not reach the bottom items (ผลงาน, ติดต่อเรา).

Added to mobile menu container:
- max-h-[calc(100vh-4rem)]: cap height at viewport minus header
- overflow-y-auto: enable internal scrollbar when content overflows
- overscroll-contain: prevent scroll chain to background page
  (iOS Safari specific)

Menu is now fully scrollable within its own container — page
content underneath stays still while user scrolls through menu
items.
2026-06-11 11:17:43 +07:00
Kunthawat Greethong
bb7007aa88 feat(mobile-menu): add collapsible products dropdown matching desktop
The mobile menu previously had only flat links (หน้าแรก, เกี่ยวกับเรา,
สินค้าทั้งหมด, ผลงาน, ติดต่อเรา) while the desktop menu had a mega
dropdown with 7 product categories (ระบบท่อ, ฉนวนหุ้มท่อ, เครื่องเชื่อมท่อ,
ระบบน้ำ, อุปกรณ์ปรับอากาศ, อุปกรณ์ดับเพลิง, ระบบรั้ว) and 27
subcategory links.

Updated mobile menu in BaseLayout.astro to mirror the desktop
structure: "สินค้าทั้งหมด" is now a collapsible button that
expands to show all 7 categories and their 27 subcategory links,
plus a "ดูสินค้าทั้งหมด →" CTA at the bottom.

Toggle behavior:
- Click button: opens submenu, rotates chevron 180°, sets
  aria-expanded="true"
- Click again: closes submenu, returns chevron
- aria-controls="mobile-products-submenu" for accessibility

Reverted Header.astro changes — that file is not actually used
by the site (BaseLayout.astro has its own inline header with the
real desktop mega menu and mobile menu).

Mobile menu now has parity with desktop navigation structure.
2026-06-11 11:09:15 +07:00
Kunthawat Greethong
15b4b40681 fix(insulation,menu): real product images + accurate count + menu reorder
1 REAL product images (downloaded from supplier product pages)
   Replaced generic logos/QR codes with actual product photos
   from WooCommerce product galleries on 3t-insulation.com:
   - rockwool/: cool-n-comfort-rl/sl, prorox-bl/ps960/sl/wm,
     rocksafe-plus, safe-n-silent-pro, thermalrock-s, rockduct, conlit-h110
   - microfiber/: microfiber-enf/fl/fld/fls/fr/frd/frk/glc/gts/hi-temp/pfl/pln
   - scg/: scg-crb-g, scg-cylence-zoftone/zoundblock, scg-dln-g, scg-fpo-g,
     scg-fso-g, scg-gtb-g, scg-hti-g, scg-htif-g, scg-htifd-g, scg-stay-cool, scg-ub-g

2) Home page category count for ฉนวนหุ้มท่อ: 4 → 7
   (Armaflex, Aeroflex, Maxflex, Thermobreak, ROCKWOOL, MICROFIBER, SCG)

3) Menu order swap: ฉนวนหุ้มท่อ ↔ เครื่องเชื่อมท่อ
   Moved ฉนวนหุ้มท่อ BEFORE เครื่องเชื่อมท่อ in BaseLayout categories
EOF
)
2026-06-10 13:26:43 +07:00
Kunthawat Greethong
739e081296 feat(products): add 3 new insulation brand pages — ROCKWOOL, MICROFIBER, SCG
New product pages for insulation product lines, using supplier (3t-insulation.com)
product data and images (downloaded, no hotlinks):

1 ROCKWOOL (/rockwool) — Stone wool insulation, pipe/duct/roof/fire
2) MICROFIBER (/microfiber) — Glass wool insulation, roof/HVAC/industrial
3) SCG (/scg) — SCG insulation, roof/HVAC/acoustic/high-temp

Each page:
- Hero section (canonical template: pill + title + description + buttons)
- Brand description with key product info
- Product grid (6+ models per brand with images)
- Features section (quality, pricing, delivery)
- CTA section (canonical template)

Images: downloaded from supplier site to public/images/{brand}/
Menu: added to Header, BaseLayout nav (under ฉนวนหุ้มท่อ), Footer, all-products

Crawled from: 3t-insulation.com/brand/{rockwool,microfiber,scg}/
(13 products per brand, ~39 total product models referenced)

Pages created: 3 | Files changed: 37 (3 new .astro + 3 image dirs + 3 menu edits)
EOF
)
2026-06-10 11:10:24 +07:00
Kunthawat Greethong
5abe1edb71 fix(content): 4 content updates per user request
1 เทอร์โมเบรค → Thermobreak (display names only)
   - Header menu, BaseLayout nav/categories, all-products, index
   - URLs (/เทอร์โมเบรค-thermobreak) left unchanged
   - Product page (เทอร์โมเบรค-thermobreak.astro) unchanged

2) รูป category ระบบน้ำ → valve kitz image
   - ระบบน้ำ.astro + index.astro: water-pump_000C.jpg → valve_000C.jpg

3) ท่อพีพีอาร์ → ระบบท่อ (category + menu only)
   - Header, Footer, BaseLayout, all-products (6 category refs), index
   - Product names/sub-labels left unchanged

4) Add Supply Air image to grilles page
   - New image: /images/grilles/supply-air.jpg
   - Added to product details gallery alongside existing images
EOF
)
2026-06-10 10:49:59 +07:00
Kunthawat Greethong
17f4eb752b fix(content): drop @ prefix from JPPSELECTION in text + add CTA to 20 products
Two changes driven by content review:

1) @JPPSELECTION → JPPSELECTION in user-visible text only
   - 19 page files: drop @ from inline JPPSELECTION in <p> tags
   - BaseLayout.astro + Footer.astro: drop @ from companyInfo.line
     (rendered as "LINE: @JPPSELECTION" in mobile CTA + footer)
   - URL line.me/ti/p/~JPPSELECTION left unchanged (the @ belongs
     in the URL per line.me convention)

2) Add missing CTA section to all 20 product pages
   - 16 pages had no CTA at all
   - 4 pages (armflex, aeroflex, maxflex, xy-lent) had bespoke
     CTA variants; replaced with canonical template
   - Template copied from ppr-thai-ppr
   - CTA inserted before </main> in all 20 product pages

Verified rendered HTML:
- @JPPSELECTION in <p> text = 0 across all 20 pages
- "LINE: JPPSELECTION" rendered in footer / mobile CTA
- heading + contact + line buttons present in all 20

Files touched: 30
2026-06-10 09:44:28 +07:00
Kunthawat Greethong
d8ff358dd7 refactor(hero): rewrite 9 product hero sections to canonical template
- Extract data from each page (pill, title, image, features, hasPricelist)
- Generate hero from canonical template (text-LEFT, image-RIGHT, animated bg)
- Remove dead <Header slot=Footer slot= StickyBottomCTA slots (BaseLayout renders defaults)
- Remove dead data-price-button when id="pricelist" missing (auto-detect hides it)
- Drop legacy justify-center/max-w-md workarounds; use canonical classes
- Apply consistent TEXT-LEFT order across all product heroes
- Drop unused mobile-only sections in ตู้ดับเพลิง (page now follows template)
- Add overflow-x-clip on header/footer (submenu overflow fix)
- Add .submenu-anchor class for submenu positioning

Verified: 9 pages render with valid HTML, TEXT-LEFT, correct features, no dead links.
2026-06-10 08:16:06 +07:00
hermes
b7931731f9 fix(responsive): mobile footer restructure + categories 1-col + overflow fix
Some checks failed
Build & Deploy to EasyPanel / build-and-deploy (push) Has been cancelled
Lint & Test / build-check (push) Has been cancelled
Three mobile issues fixed:

1. Categories section: <640px (mobile) now 1 column. Previously it was
   already 2 columns at the smallest breakpoint which made the tiles feel
   cramped. Uses Tailwind's default sm: (640px) for the 1->2 transition,
   not a custom min-[500px].

2. Footer mobile layout (<1024px): three centered rows inside the same
   max-w-7xl container.
     - Row 1: Company Info (1 col, max-w-md, centered)
     - Row 2: Quick Links + สินค้ายอดนิยม (2 cols, max-w-2xl, centered)
     - Row 3: ติดต่อเรา (1 col, max-w-sm outer, max-w-xs button column)
   The narrow inner max-widths are deliberate: a full-width row of
   contact buttons looks stretched, especially the bottom one with the
   โทรเลย / แอดไลน์ buttons.

3. Horizontal overflow bug: data-animate='fade-left' and 'fade-right'
   children sit at translateX(30px) / translateX(-30px) in their
   initial state, before the IntersectionObserver fires. On small
   viewports this pushes the page 30px wider than the viewport and
   reveals a horizontal scrollbar as soon as the user loads the page.
   Adding overflow-x-clip on <footer> keeps the off-screen translation
   contained inside the footer.
2026-06-09 14:18:54 +07:00
hermes
fe442790ab feat(homepage): rework homepage + align about-us + footer popular products
## homepage (index.astro)

- Drop '500+ รายการสินค้า' from stat badges and rebuild the trust-badges
  section to show only 15+ ปีประสบการณ์, 400+ ลูกค้าทั่วประเทศ, 98%
  ลูกค้าพึงพอใจ — bigger numbers (text-5xl/6xl), no icons, counter animation
- Add 'ทำไมเลือกเรา' section (4 cards: ส่งฟรี กทม./ปริมณฑล, Lead time 1-3
  วัน, ราคาโรงงาน, ทีมช่างแนะนำ) — no icons, primary/accent border hover
- Add 'หมวดสินค้า' section (8 tiles: 7 categories + 'สินค้าทั้งหมด')
  placed after 'สินค้าแนะนำ' — each tile is a real product photo with
  dark gradient overlay and a CTA link to /all-products?filter=<id>
- Reorder: Hero → ทำไมเลือกเรา → สินค้าแนะนำ → หมวดสินค้า → Stats →
  บทความล่าสุด → CTA

## all-products (filter from URL)

- Script now reads ?filter=<id> on load and applies it without rewriting
  the URL, then on click updates both the filter and the URL via
  history.replaceState so the back/forward buttons work

## footer (BaseLayout.astro)

- Replace productLinks with the curated 6 popular products: ไทยพีพีอาร์,
  เทอร์โมเบรค, กริลแอร์, หัวจ่ายแอร์ Ball Jet, ท่อ HDPE, ท่อ Syler

## about-us

- Stats: 10+/1000+/500+ replaced with 15+ / 400+ + counter animation,
  bigger numbers, rounded-3xl + shadow (matches home)
- Why Choose Us: rebuilt with the same 4 cards + same style as home's
  'ทำไมเลือกเรา' (no icons, pill header, larger h2 + subtitle)
2026-06-08 22:56:52 +07:00
hermes
b34f8fc2fb feat(blog): Phase 5 SEO/GEO content with 5 new blog posts
Add 5 long-form Thai blog posts (1,200-2,500 words each) with SEO + GEO
optimization for the dealplustech water-systems site. Each post targets
a specific audience (contractors, engineers, project managers) and
follows a content-quality workflow: source real product specs, verify
Thai text, dedupe images, link back to product pages.

## New blog posts (src/content/blog/)
- thermobreak-guide.md (Thermobreak closed-cell insulation overview)
- plastic-grilles-guide.md (ABS plastic grilles for HVAC)
- ppr-pipe-guide.md (PPR pipe properties + heat-fusion welding)
- ppr-vs-hdpe-vs-upvc.md (3-way pipe comparison with PE80/PE100)
- thermobreak-series-guide.md (Thermobreak LS vs Solar series)
- 10-things-checklist-pipe-ordering.md (10-point pre-order checklist)

## Removed legacy posts
- pipe-knowledge.md, valve-guide.md, welcome-post.md (orphans)

## Hero images (public/images/blog/)
~20 product photos sourced from manufacturers (Thermobreak, Thai PPR,
thaiconsupply) plus Nano Banana Pro infographics. All resized to
3:2 aspect ratio per user preference. Source folder preserved for
re-derivation.

## Astro layout/SEO work
- src/components/seo/SEO.astro, JsonLd.astro (new SEO components)
- src/layouts/BaseLayout.astro, Layout.astro (OG/Twitter/JSON-LD wiring)
- src/pages/404.astro
- Product pages (8): added #pricelist anchors + schema work
- src/styles/global.css: scroll-padding for sticky-header anchors

## Automation scripts (scripts/)
- build_og_image.py (OG image builder)
- inject_faq_schema.py, inject_product_schema.py (JSON-LD injection)

## Misc
- public/robots.txt, public/images/og/default-og.jpg
- .gitignore: exclude scripts/__pycache__/
2026-06-08 12:45:32 +07:00
Kunthawat Greethong
47f28cdf65 feat: add หัวจ่ายแอร์ Ball Jet product page
New product page at /หัวจ่าย-ball-jet covering Ball Spout Jet
Diffuser (JD Series) — long-throw ceiling air diffuser for
high-ceiling commercial/industrial buildings.

Content sourced from sapamaket.com, sapaengineer.com (official),
superaircool.com technical specs, and the user's brief. The page
covers:
- Hero with full feature badges (360° rotation, 45° nozzle, sizes,
  materials)
- Product description, features, technical specs, applications,
  advantages
- Image gallery (7 photos scraped from the official SAPA source at
  sapaengineer.com — public product marketing images, used to
  illustrate the product)
- 5-question FAQ
- Contact CTA

Nav updated: added หัวจ่ายแอร์ Ball Jet as the 3rd subcategory under
'อุปกรณ์ปรับอากาศ' in BaseLayout.astro.

No PDF pricelist (none provided by source). No price data displayed
(per user request — pricing to be confirmed separately).
2026-06-04 10:12:24 +07:00
Kunthawat Greethong
c8cf03a725 Add EmDash CMS blog + hero standardization + seed fix
- Add EmDash CMS integration with SQLite and local storage
- Add blog collection (seed/seed.json) with 3 sample posts
- Add /บทความ list page and /บทความ/[slug] detail page
- Add blog section to homepage
- Fix reserved field slugs (slug, published_at removed from fields)
- Fix date field mapping (publishedAt camelCase)
- Fix featured image URL for admin-uploaded images (meta.storageKey)
- Standardize all product page hero sections
- Update navigation with 'บทความ' link
- Configure Google OAuth provider
2026-06-01 15:44:02 +07:00
Kunthawat Greethong
0d1f59611c Fix broken BaseLayout category structure 2026-05-24 19:34:27 +07:00
Kunthawat Greethong
984c2571c5 Remove อุปกรณ์ปรับอากาศ page and all references 2026-05-24 15:43:13 +07:00
Kunthawat Greethong
d231325a4d Category: อุปกรณ์ดับเพลิง, Submenu: ตู้ดับเพลิง 2026-05-24 15:38:56 +07:00
Kunthawat Greethong
33c9349cd8 Change product label to อุปกรณ์ดับเพลิง, keep category as ตู้ดับเพลิง 2026-05-24 15:37:30 +07:00
Kunthawat Greethong
856ad5ff7a Change menu label to ตู้ดับเพลิง 2026-05-24 15:36:03 +07:00
Kunthawat Greethong
d52e62254c Keep category name as อุปกรณ์ดับเพลิง, change link to /ตู้ดับเพลิง 2026-05-24 15:34:07 +07:00
Kunthawat Greethong
12608e3c18 Fix mega menu - change อุปกรณ์ดับเพลิง to ตู้ดับเพลิง in BaseLayout 2026-05-24 15:31:46 +07:00
Kunthawat Greethong
882fa7f819 Update insulation brand pages (Armaflex, Aeroflex, Maxflex)
- Added 3 new brand pages: armflex.astro, aeroflex.astro, maxflex.astro
- Updated hero images with product photos from 3t-insulation.com
- Enhanced content with product specifications and benefits
- Added standard certifications (FM Approved, UL 94, GREENGUARD)
- Added product gallery sections
- Shortened menu names to brand only (Armaflex, Aeroflex, Maxflex)
- Removed old ฉนวนหุ้มท่อ.astro page
- Updated Header and BaseLayout navigation
- Downloaded product images for all 3 brands
2026-05-22 12:50:17 +07:00
Kunthawat Greethong
5219cf8f72 Part 1: Source code - Astro project structure and components 2026-05-21 16:33:59 +07:00