feat: Restore full product data from commit 668f69048f
- Restored site-config.ts (2100 lines with all product tables) - Restored proper product page template with table rendering - Restored Header, Footer, FloatingContact components - All 6 products now show detailed specification tables - Preserved all PDPA compliance features
This commit is contained in:
12
dist/admin/consent-logs/index.html
vendored
12
dist/admin/consent-logs/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/blog/index.html
vendored
12
dist/blog/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/blog/ข้อดี-ท่อ-hdpe.md/index.html
vendored
12
dist/blog/ข้อดี-ท่อ-hdpe.md/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/blog/ท่อ-ppr-คืออะไร.md/index.html
vendored
12
dist/blog/ท่อ-ppr-คืออะไร.md/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/blog/บำรุงรักษาปั๊มน้ำ.md/index.html
vendored
12
dist/blog/บำรุงรักษาปั๊มน้ำ.md/index.html
vendored
File diff suppressed because one or more lines are too long
BIN
dist/images/2021/03/hdpe001.jpg
vendored
BIN
dist/images/2021/03/hdpe001.jpg
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 137 KiB |
1606
dist/images/2021/03/hdpe002.jpg
vendored
Normal file
1606
dist/images/2021/03/hdpe002.jpg
vendored
Normal file
File diff suppressed because one or more lines are too long
26
dist/images/2021/03/hdpe_pipe_main.jpg
vendored
26
dist/images/2021/03/hdpe_pipe_main.jpg
vendored
@@ -1579,4 +1579,28 @@ var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}};
|
||||
<script type="text/javascript" src="https://www.dealplustech.co.th/wp-includes/js/wp-util.min.js?ver=6.9.4" id="wp-util-js"></script>
|
||||
<script type="text/javascript" id="wc-add-to-cart-variation-js-extra">
|
||||
/* <![CDATA[ */
|
||||
var wc_add_to_cart_variation_params = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_no_matching_variations_text":"\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22\u0e04\u0e48\u0e30 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48","i18n_make_a_selection_text":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2a\u0e34\u0e19\u0e04\u0e
|
||||
var wc_add_to_cart_variation_params = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_no_matching_variations_text":"\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22\u0e04\u0e48\u0e30 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48","i18n_make_a_selection_text":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e19\u0e35\u0e49\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e15\u0e30\u0e01\u0e23\u0e49\u0e32\u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13","i18n_unavailable_text":"\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22 \u0e2a\u0e34\u0e19\u0e04\u0e49\u0e32\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48","i18n_reset_alert_text":"Your selection has been reset. Please select some product options before adding this product to your cart."};
|
||||
//# sourceURL=wc-add-to-cart-variation-js-extra
|
||||
/* ]]> */
|
||||
</script>
|
||||
<script type="text/javascript" src="https://www.dealplustech.co.th/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js?ver=10.4.4" id="wc-add-to-cart-variation-js" defer="defer" data-wp-strategy="defer"></script>
|
||||
<script type="text/javascript" src="https://www.dealplustech.co.th/wp-content/plugins/js_composer/assets/js/dist/js_composer_front.min.js?ver=6.5.0" id="wpb_composer_front_js-js"></script>
|
||||
<script type="text/javascript" id="ivory-ajax-search-scripts-js-extra">
|
||||
/* <![CDATA[ */
|
||||
var IvoryAjaxVars = {"ajaxurl":"https://www.dealplustech.co.th/wp-admin/admin-ajax.php","ajax_nonce":"f67d8ea69a"};
|
||||
//# sourceURL=ivory-ajax-search-scripts-js-extra
|
||||
/* ]]> */
|
||||
</script>
|
||||
<script type="text/javascript" src="https://www.dealplustech.co.th/wp-content/plugins/add-search-to-menu/public/js/ivory-ajax-search.min.js?ver=5.5.14" id="ivory-ajax-search-scripts-js"></script>
|
||||
<script id="wp-emoji-settings" type="application/json">
|
||||
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.dealplustech.co.th/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}}
|
||||
</script>
|
||||
<script type="module">
|
||||
/* <![CDATA[ */
|
||||
/*! This file is auto-generated */
|
||||
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
|
||||
//# sourceURL=https://www.dealplustech.co.th/wp-includes/js/wp-emoji-loader.min.js
|
||||
/* ]]> */
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
12
dist/index.html
vendored
12
dist/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/privacy-policy/index.html
vendored
12
dist/privacy-policy/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/products/index.html
vendored
12
dist/products/index.html
vendored
File diff suppressed because one or more lines are too long
34
dist/products/pp-r-pp-rct-poloplast/index.html
vendored
34
dist/products/pp-r-pp-rct-poloplast/index.html
vendored
File diff suppressed because one or more lines are too long
34
dist/products/ท่อhdpe/index.html
vendored
34
dist/products/ท่อhdpe/index.html
vendored
File diff suppressed because one or more lines are too long
34
dist/products/ท่อppr-thaippr/index.html
vendored
34
dist/products/ท่อppr-thaippr/index.html
vendored
File diff suppressed because one or more lines are too long
34
dist/products/ท่อพีพีอาร์ตราช้าง/index.html
vendored
34
dist/products/ท่อพีพีอาร์ตราช้าง/index.html
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
34
dist/products/ท่อไซเลอร์/index.html
vendored
34
dist/products/ท่อไซเลอร์/index.html
vendored
File diff suppressed because one or more lines are too long
12
dist/terms-and-conditions/index.html
vendored
12
dist/terms-and-conditions/index.html
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 137 KiB |
1606
public/images/2021/03/hdpe002.jpg
Normal file
1606
public/images/2021/03/hdpe002.jpg
Normal file
File diff suppressed because one or more lines are too long
@@ -1,6 +1,10 @@
|
||||
---
|
||||
import CookieConsentBanner from '../components/CookieConsentBanner.astro';
|
||||
export interface Props { title: string; description?: string; image?: string; }
|
||||
export interface Props {
|
||||
title: string;
|
||||
description?: string;
|
||||
image?: string;
|
||||
}
|
||||
|
||||
const { title, description, image } = Astro.props;
|
||||
---
|
||||
|
||||
@@ -9,18 +13,35 @@ const { title, description, image } = Astro.props;
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content={description || 'บริษัท ดีล พลัส เทค จำกัด'} />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<meta name="description" content={description || 'บริษัท ดีล พลัส เทค จำกัด - ผู้เชี่ยวชาญด้านระบบน้ำ ท่อ PPR ตราช้าง ท่อพีพีอาร์ ท่อ HDPE'} />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="alternate icon" href="/favicon.ico" sizes="any" />
|
||||
<link rel="apple-touch-icon" href="/favicon.svg" />
|
||||
|
||||
<!-- Google Fonts: Kanit for Thai -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
|
||||
|
||||
<!-- SEO -->
|
||||
<meta property="og:title" content={title} />
|
||||
<meta property="og:description" content={description || 'Deal Plus Tech'} />
|
||||
<meta property="og:description" content={description || 'Deal Plus Tech - ผู้เชี่ยวชาญด้านระบบน้ำ'} />
|
||||
<meta property="og:image" content={image || '/og-image.jpg'} />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
|
||||
<title>{title} | ดีล พลัส เทค</title>
|
||||
</head>
|
||||
<body class="flex flex-col min-h-screen">
|
||||
<slot />
|
||||
<CookieConsentBanner />
|
||||
</body>
|
||||
</html>
|
||||
<style is:global>@import "../styles/globals.css";</style>
|
||||
|
||||
<style is:global>
|
||||
html {
|
||||
font-family: 'Kanit', system-ui, sans-serif;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
import { getCollection, render } from 'astro:content';
|
||||
import type { CollectionEntry } from 'astro:content';
|
||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||
import Header from '../../components/Header.astro';
|
||||
import Footer from '../../components/Footer.astro';
|
||||
import { productCategories } from '../../data/site-config';
|
||||
|
||||
export async function getStaticPaths() {
|
||||
@@ -14,7 +12,9 @@ export async function getStaticPaths() {
|
||||
}));
|
||||
}
|
||||
|
||||
interface Props { product: CollectionEntry<'products'>; }
|
||||
interface Props {
|
||||
product: CollectionEntry<'products'>;
|
||||
}
|
||||
|
||||
const { product } = Astro.props;
|
||||
const { Content } = await render(product);
|
||||
@@ -24,29 +24,35 @@ const productData = productCategories.find(p => p.id === product.data.id);
|
||||
const productTables = productData?.productTables || [];
|
||||
---
|
||||
|
||||
<BaseLayout title={product.data.title} description={product.data.description || ''}>
|
||||
<Header />
|
||||
<main class="pt-20">
|
||||
<article class="container mx-auto px-4 py-12">
|
||||
<h1 class="text-4xl font-bold mb-6">{product.data.title}</h1>
|
||||
<div class="prose max-w-none mb-12"><Content /></div>
|
||||
|
||||
<BaseLayout title={product.data.name} description={product.data.shortDescription || product.data.description}>
|
||||
<main class="py-12">
|
||||
<article class="container mx-auto px-4 max-w-7xl">
|
||||
<header class="mb-12">
|
||||
<h1 class="text-4xl md:text-5xl lg:text-6xl xl:text-7xl font-bold text-secondary-900 mb-6">{product.data.name}</h1>
|
||||
<p class="text-lg md:text-xl lg:text-2xl xl:text-3xl text-secondary-600 max-w-4xl">{product.data.description}</p>
|
||||
</header>
|
||||
<div class="prose prose-lg md:prose-xl lg:prose-2xl max-w-none mb-12"><Content /></div>
|
||||
{productTables.length > 0 && (
|
||||
<div class="space-y-8">
|
||||
{productTables.map((table: any) => (
|
||||
<div>
|
||||
<h3 class="text-2xl font-bold mb-4">{table.tableName}</h3>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="w-full border-collapse border">
|
||||
<section class="mb-12">
|
||||
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-secondary-900 mb-8">ข้อมูลจำเพาะ</h2>
|
||||
{productTables.map((table: any, tableIndex: number) => (
|
||||
<div class="bg-white rounded-2xl border-2 border-secondary-200 shadow-lg mb-8">
|
||||
<h3 class="text-lg md:text-xl lg:text-2xl font-semibold text-secondary-800 p-4 md:p-6 bg-secondary-50 border-b-2 border-secondary-200">{table.tableName}</h3>
|
||||
<div class="w-full overflow-x-auto">
|
||||
<table class="w-full min-w-[600px] border-collapse text-sm md:text-base">
|
||||
<thead>
|
||||
<tr class="bg-secondary-100">
|
||||
{table.headers?.map((h: string) => <th class="border p-3 text-left">{h}</th>)}
|
||||
<tr class="bg-primary-100">
|
||||
{table.headers.map((header: string, headerIndex: number) => (
|
||||
<th class="px-3 py-2 md:px-4 md:py-3 text-left text-xs md:text-sm lg:text-base font-bold text-primary-800 border-b-2 border-primary-300 whitespace-nowrap">{header}</th>
|
||||
))}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{table.rows?.map((row: string[]) => (
|
||||
<tr>
|
||||
{row.map((cell: string) => <td class="border p-3">{cell}</td>)}
|
||||
{table.rows.map((row: string[], rowIndex: number) => (
|
||||
<tr class={rowIndex % 2 === 0 ? 'bg-white' : 'bg-secondary-50'}>
|
||||
{row.map((cell: string, cellIndex: number) => (
|
||||
<td class="px-3 py-2 md:px-4 md:py-3 text-secondary-700 border-b border-secondary-200">{cell}</td>
|
||||
))}
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
@@ -54,9 +60,8 @@ const productTables = productData?.productTables || [];
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
</article>
|
||||
</main>
|
||||
<Footer />
|
||||
</BaseLayout>
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--color-primary-500: #22c55e;
|
||||
--color-primary-600: #16a34a;
|
||||
--color-primary-700: #15803d;
|
||||
--color-secondary-50: #f8fafc;
|
||||
--color-secondary-100: #f1f5f9;
|
||||
--color-secondary-200: #e2e8f0;
|
||||
--color-secondary-300: #cbd5e1;
|
||||
--color-secondary-500: #64748b;
|
||||
--color-secondary-600: #475569;
|
||||
--color-secondary-700: #334155;
|
||||
--color-secondary-800: #1e293b;
|
||||
--color-secondary-900: #0f172a;
|
||||
--color-accent-500: #eab308;
|
||||
}
|
||||
|
||||
html { font-family: 'Kanit', system-ui, sans-serif; scroll-behavior: smooth; }
|
||||
body { background-color: white; color: var(--color-secondary-900); -webkit-font-smoothing: antialiased; }
|
||||
h1, h2, h3, h4, h5, h6 { font-weight: 700; letter-spacing: -0.025em; }
|
||||
|
||||
.btn-primary { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; background-color: var(--color-primary-600); color: white; font-weight: 600; border-radius: 0.5rem; transition: all 0.2s; }
|
||||
.btn-primary:hover { background-color: var(--color-primary-700); }
|
||||
.btn-secondary { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; background-color: var(--color-secondary-800); color: white; font-weight: 600; border-radius: 0.5rem; transition: all 0.2s; }
|
||||
.btn-secondary:hover { background-color: var(--color-secondary-900); }
|
||||
.btn-outline { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; border: 2px solid var(--color-primary-600); color: var(--color-primary-600); font-weight: 600; border-radius: 0.5rem; background-color: transparent; transition: all 0.2s; }
|
||||
.btn-outline:hover { background-color: var(--color-primary-600); color: white; }
|
||||
|
||||
.section-title { font-size: 1.875rem; font-weight: 700; text-align: center; margin-bottom: 1rem; }
|
||||
@media (min-width: 768px) { .section-title { font-size: 2.25rem; } }
|
||||
@media (min-width: 1024px) { .section-title { font-size: 3rem; } }
|
||||
.section-subtitle { font-size: 1.125rem; text-align: center; color: var(--color-secondary-600); }
|
||||
|
||||
.card { background-color: white; border-radius: 0.75rem; overflow: hidden; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); transition: all 0.3s; }
|
||||
.card:hover { box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1); transform: translateY(-0.25rem); }
|
||||
|
||||
Reference in New Issue
Block a user