diff --git a/app/blog/[...slug]/page.jsx b/app/blog/[...slug]/page.jsx
new file mode 100644
index 0000000..c220627
--- /dev/null
+++ b/app/blog/[...slug]/page.jsx
@@ -0,0 +1,184 @@
+import Banner from "@/components/banner/Banner";
+import Category from "@/components/sidebar/Category";
+import { getSiteSettings } from "@/utils/data";
+import { notFound } from 'next/navigation';
+import DynamicListPage from "@/components/common/DynamicListPage";
+import { Suspense } from 'react';
+import { getPageData } from "@/utils/data";
+import ProductImageGallery from "@/components/products/ProductImageGallery";
+
+const baseSlug = 'blog';
+
+const LoadingSpinner = () => (
+
+);
+
+export const revalidate = 3600;
+
+export async function generateMetadata({ params }) {
+ const resolvedParams = await params;
+ const slug = resolvedParams.slug || [];
+ const slugArr = [baseSlug, ...(Array.isArray(slug) ? slug : [slug])];
+ const { data, error, page_info } = await getPageData({ slug_list: slugArr });
+ const siteSettings = await getSiteSettings();
+ const siteTitle = siteSettings.site_title || '';
+ const siteName = siteSettings.site_name || '';
+ const siteNameInPageTitles = siteSettings.site_name_in_page_titles || 'None';
+
+ let title = '';
+ if (error) {
+ title = error.title || 'Page Error';
+ return {
+ title,
+ description: error.message || '',
+ };
+ }
+ if (Array.isArray(data) && page_info) {
+ title = page_info.meta_title || page_info.title || '';
+ if (siteName && title) {
+ if (siteNameInPageTitles === 'After') {
+ title = `${title} - ${siteName}`;
+ } else if (siteNameInPageTitles === 'Before') {
+ title = `${siteName} - ${title}`;
+ }
+ }
+ return {
+ title,
+ description: page_info.meta_description || '',
+ };
+ }
+ title = data?.meta_title || data?.title || '';
+ if (siteName && title) {
+ if (siteNameInPageTitles === 'After') {
+ title = `${title} - ${siteName}`;
+ } else if (siteNameInPageTitles === 'Before') {
+ title = `${siteName} - ${title}`;
+ }
+ }
+ return {
+ title,
+ description: data?.meta_description || '',
+ };
+}
+
+export default async function Page({ params, searchParams }) {
+ const resolvedParams = await params;
+ const slug = resolvedParams.slug || [];
+ const slugArr = [baseSlug, ...(Array.isArray(slug) ? slug : [slug])];
+
+ const siteSettings = await getSiteSettings();
+ const pageSize = Number(siteSettings.page_size) || 12;
+
+ const { data, error, total } = await getPageData({
+ slug_list: slugArr,
+ page: 1,
+ page_size: pageSize,
+ downloadFiles: true,
+ });
+
+ if (error) {
+ notFound();
+ }
+ const bannerComponentName = 'Banner-' + baseSlug;
+ const categoryComponentName = 'Category-' + baseSlug;
+ if (Array.isArray(data)) {
+ const currentPath = '/' + slugArr.join('/');
+ const listColumns = 4;
+ return (
+ <>
+
+
+ >
+ );
+ } else if (data) {
+ return (
+ <>
+
+
+
+
+
+
+
+ {/* 图片和附加信息并排显示,响应式优化 */}
+ {(data.image || data.subtitle) && (
+
+ {/* 图片轮播区块 */}
+
+
+
+ {/* 产品标题 */}
+ {data.title && (
+
+ {data.title}
+
+ )}
+ {/* 产品副标题 */}
+ {data.subtitle && (
+
+ {data.subtitle}
+
+ )}
+
+
+ )}
+ {/* Content 和 Additional Content 标签式排版 */}
+
+
+ {/* 标签内容 */}
+
+
+
+ {data.additional_content && (
+
+ )}
+
+
+
+
+
+
+ >
+ );
+ } else {
+ notFound();
+ }
+}
diff --git a/public/files/5oi1dqhaj5_27741ab5.png b/public/files/5oi1dqhaj5_27741ab5.png
new file mode 100644
index 0000000..3e4e150
Binary files /dev/null and b/public/files/5oi1dqhaj5_27741ab5.png differ
diff --git a/public/files/697qlr5qkt_6da2a7a5.png b/public/files/697qlr5qkt_6da2a7a5.png
new file mode 100644
index 0000000..0a94d05
Binary files /dev/null and b/public/files/697qlr5qkt_6da2a7a5.png differ
diff --git a/public/files/6d7fumipp2_563418ea.png b/public/files/6d7fumipp2_563418ea.png
new file mode 100644
index 0000000..d015534
Binary files /dev/null and b/public/files/6d7fumipp2_563418ea.png differ
diff --git a/public/files/6gf02l7c2r_7af165e5.png b/public/files/6gf02l7c2r_7af165e5.png
new file mode 100644
index 0000000..649bea9
Binary files /dev/null and b/public/files/6gf02l7c2r_7af165e5.png differ
diff --git a/public/files/6ka43a6d4l_8a532a29.png b/public/files/6ka43a6d4l_8a532a29.png
new file mode 100644
index 0000000..c21c77f
Binary files /dev/null and b/public/files/6ka43a6d4l_8a532a29.png differ
diff --git a/public/files/6phtiuie9s_8100085c.png b/public/files/6phtiuie9s_8100085c.png
new file mode 100644
index 0000000..c791d07
Binary files /dev/null and b/public/files/6phtiuie9s_8100085c.png differ
diff --git a/public/files/6ssqbuu4u6_903c606a.png b/public/files/6ssqbuu4u6_903c606a.png
new file mode 100644
index 0000000..972f082
Binary files /dev/null and b/public/files/6ssqbuu4u6_903c606a.png differ
diff --git a/public/files/70uq17d12c_8b9ead18.png b/public/files/70uq17d12c_8b9ead18.png
new file mode 100644
index 0000000..2a37cd7
Binary files /dev/null and b/public/files/70uq17d12c_8b9ead18.png differ
diff --git a/public/files/75jcdqvku5_18fd7939.png b/public/files/75jcdqvku5_18fd7939.png
new file mode 100644
index 0000000..c182bfd
Binary files /dev/null and b/public/files/75jcdqvku5_18fd7939.png differ
diff --git a/public/files/79gag53jn0_6bcb976f.png b/public/files/79gag53jn0_6bcb976f.png
new file mode 100644
index 0000000..dc5da09
Binary files /dev/null and b/public/files/79gag53jn0_6bcb976f.png differ
diff --git a/public/files/7d8bstk1q9_842ca16b.png b/public/files/7d8bstk1q9_842ca16b.png
new file mode 100644
index 0000000..155d816
Binary files /dev/null and b/public/files/7d8bstk1q9_842ca16b.png differ
diff --git a/public/files/aietdral22_150a4ecb.png b/public/files/aietdral22_150a4ecb.png
new file mode 100644
index 0000000..edb1ad0
Binary files /dev/null and b/public/files/aietdral22_150a4ecb.png differ
diff --git a/public/files/aietdral22_79b5b015.png b/public/files/aietdral22_79b5b015.png
new file mode 100644
index 0000000..53be951
Binary files /dev/null and b/public/files/aietdral22_79b5b015.png differ
diff --git a/public/files/aietdral22_98a79c2d.png b/public/files/aietdral22_98a79c2d.png
new file mode 100644
index 0000000..182f251
Binary files /dev/null and b/public/files/aietdral22_98a79c2d.png differ
diff --git a/public/files/aietdral22_fe39b7ae.png b/public/files/aietdral22_fe39b7ae.png
new file mode 100644
index 0000000..a3460f5
Binary files /dev/null and b/public/files/aietdral22_fe39b7ae.png differ
diff --git a/public/files/alqodu24nk_4b3bd4e3.png b/public/files/alqodu24nk_4b3bd4e3.png
new file mode 100644
index 0000000..09a48f2
Binary files /dev/null and b/public/files/alqodu24nk_4b3bd4e3.png differ
diff --git a/public/files/alqodu24nk_54e1e825.png b/public/files/alqodu24nk_54e1e825.png
new file mode 100644
index 0000000..25b6c0e
Binary files /dev/null and b/public/files/alqodu24nk_54e1e825.png differ
diff --git a/public/files/alqodu24nk_a5957cdb.png b/public/files/alqodu24nk_a5957cdb.png
new file mode 100644
index 0000000..b51170c
Binary files /dev/null and b/public/files/alqodu24nk_a5957cdb.png differ
diff --git a/public/files/alqodu24nk_ef2b39eb.png b/public/files/alqodu24nk_ef2b39eb.png
new file mode 100644
index 0000000..70d9d53
Binary files /dev/null and b/public/files/alqodu24nk_ef2b39eb.png differ
diff --git a/public/files/ap2bod0qtt_6c2e0fc2.png b/public/files/ap2bod0qtt_6c2e0fc2.png
new file mode 100644
index 0000000..883b455
Binary files /dev/null and b/public/files/ap2bod0qtt_6c2e0fc2.png differ
diff --git a/public/files/ap2bod0qtt_802a282b.png b/public/files/ap2bod0qtt_802a282b.png
new file mode 100644
index 0000000..6a5ba60
Binary files /dev/null and b/public/files/ap2bod0qtt_802a282b.png differ
diff --git a/public/files/ap2bod0qtt_c18fa696.png b/public/files/ap2bod0qtt_c18fa696.png
new file mode 100644
index 0000000..34c5b93
Binary files /dev/null and b/public/files/ap2bod0qtt_c18fa696.png differ
diff --git a/public/files/ap2bod0qtt_e2f01576.png b/public/files/ap2bod0qtt_e2f01576.png
new file mode 100644
index 0000000..99f6534
Binary files /dev/null and b/public/files/ap2bod0qtt_e2f01576.png differ
diff --git a/public/files/asbnv2d2v7_d13b3323.png b/public/files/asbnv2d2v7_d13b3323.png
new file mode 100644
index 0000000..c15e146
Binary files /dev/null and b/public/files/asbnv2d2v7_d13b3323.png differ
diff --git a/public/files/av08akuvvq_d8178987.png b/public/files/av08akuvvq_d8178987.png
new file mode 100644
index 0000000..060d4e1
Binary files /dev/null and b/public/files/av08akuvvq_d8178987.png differ
diff --git a/public/files/b1d747h38e_1744b9ac.png b/public/files/b1d747h38e_1744b9ac.png
new file mode 100644
index 0000000..263f59b
Binary files /dev/null and b/public/files/b1d747h38e_1744b9ac.png differ
diff --git a/public/files/b1d747h38e_328d12bc.png b/public/files/b1d747h38e_328d12bc.png
new file mode 100644
index 0000000..f8f2dff
Binary files /dev/null and b/public/files/b1d747h38e_328d12bc.png differ
diff --git a/public/files/b1d747h38e_c77c07bf.png b/public/files/b1d747h38e_c77c07bf.png
new file mode 100644
index 0000000..6400067
Binary files /dev/null and b/public/files/b1d747h38e_c77c07bf.png differ
diff --git a/public/files/b1d747h38e_ec2b44fc.png b/public/files/b1d747h38e_ec2b44fc.png
new file mode 100644
index 0000000..01bd895
Binary files /dev/null and b/public/files/b1d747h38e_ec2b44fc.png differ
diff --git a/public/files/b4egrujm6o_ad007d00.png b/public/files/b4egrujm6o_ad007d00.png
new file mode 100644
index 0000000..e028ff6
Binary files /dev/null and b/public/files/b4egrujm6o_ad007d00.png differ
diff --git a/public/files/b7j2a141ug_896519aa.png b/public/files/b7j2a141ug_896519aa.png
new file mode 100644
index 0000000..718b683
Binary files /dev/null and b/public/files/b7j2a141ug_896519aa.png differ
diff --git a/public/files/b7j2a141ug_b875c435.png b/public/files/b7j2a141ug_b875c435.png
new file mode 100644
index 0000000..fc66add
Binary files /dev/null and b/public/files/b7j2a141ug_b875c435.png differ
diff --git a/public/files/b7j2a141ug_c7802b05.png b/public/files/b7j2a141ug_c7802b05.png
new file mode 100644
index 0000000..0dd76aa
Binary files /dev/null and b/public/files/b7j2a141ug_c7802b05.png differ
diff --git a/public/files/b7j2a141ug_c7b8e64f.png b/public/files/b7j2a141ug_c7b8e64f.png
new file mode 100644
index 0000000..ae29a9d
Binary files /dev/null and b/public/files/b7j2a141ug_c7b8e64f.png differ
diff --git a/public/files/ba9vsf1hb3_f918c57d.png b/public/files/ba9vsf1hb3_f918c57d.png
new file mode 100644
index 0000000..41acb06
Binary files /dev/null and b/public/files/ba9vsf1hb3_f918c57d.png differ
diff --git a/public/files/bdhiflcjfd_05b4fe91.png b/public/files/bdhiflcjfd_05b4fe91.png
new file mode 100644
index 0000000..4938173
Binary files /dev/null and b/public/files/bdhiflcjfd_05b4fe91.png differ
diff --git a/public/files/bgp4hu8cdh_2ce23f98.png b/public/files/bgp4hu8cdh_2ce23f98.png
new file mode 100644
index 0000000..528b11d
Binary files /dev/null and b/public/files/bgp4hu8cdh_2ce23f98.png differ
diff --git a/public/files/bjkobigne3_bd150dda.png b/public/files/bjkobigne3_bd150dda.png
new file mode 100644
index 0000000..a80c7c5
Binary files /dev/null and b/public/files/bjkobigne3_bd150dda.png differ
diff --git a/public/files/bmp2nuesfh_97f06aea.png b/public/files/bmp2nuesfh_97f06aea.png
new file mode 100644
index 0000000..facd37c
Binary files /dev/null and b/public/files/bmp2nuesfh_97f06aea.png differ
diff --git a/public/files/bq77d4je3k_729aba41.png b/public/files/bq77d4je3k_729aba41.png
new file mode 100644
index 0000000..1e07073
Binary files /dev/null and b/public/files/bq77d4je3k_729aba41.png differ
diff --git a/public/files/bthq10th5l_43a3bb17.png b/public/files/bthq10th5l_43a3bb17.png
new file mode 100644
index 0000000..6138310
Binary files /dev/null and b/public/files/bthq10th5l_43a3bb17.png differ
diff --git a/public/files/c0lkhlu027_35de88da.png b/public/files/c0lkhlu027_35de88da.png
new file mode 100644
index 0000000..f56baba
Binary files /dev/null and b/public/files/c0lkhlu027_35de88da.png differ
diff --git a/public/files/c3hfe4iru4_0a459749.png b/public/files/c3hfe4iru4_0a459749.png
new file mode 100644
index 0000000..f20f278
Binary files /dev/null and b/public/files/c3hfe4iru4_0a459749.png differ
diff --git a/public/files/c3hfe4iru4_4088b2d5.png b/public/files/c3hfe4iru4_4088b2d5.png
new file mode 100644
index 0000000..02d2f82
Binary files /dev/null and b/public/files/c3hfe4iru4_4088b2d5.png differ
diff --git a/public/files/c3hfe4iru4_6f33c7bf.png b/public/files/c3hfe4iru4_6f33c7bf.png
new file mode 100644
index 0000000..b0a9cda
Binary files /dev/null and b/public/files/c3hfe4iru4_6f33c7bf.png differ
diff --git a/public/files/c3hfe4iru4_e6e83513.png b/public/files/c3hfe4iru4_e6e83513.png
new file mode 100644
index 0000000..66d6b49
Binary files /dev/null and b/public/files/c3hfe4iru4_e6e83513.png differ
diff --git a/public/files/v8lal09pnf_005776e3.png b/public/files/v8lal09pnf_005776e3.png
new file mode 100644
index 0000000..0a2ce77
Binary files /dev/null and b/public/files/v8lal09pnf_005776e3.png differ