diff --git a/( b/(
new file mode 100644
index 0000000..e69de29
diff --git a/components/AppsComponent/BrandData/page.jsx b/components/AppsComponent/BrandData/page.jsx
index 51a8c45..a0ea791 100644
--- a/components/AppsComponent/BrandData/page.jsx
+++ b/components/AppsComponent/BrandData/page.jsx
@@ -2,24 +2,54 @@
import Footer from "@comp/Footer/page";
import Navbar from "@comp/Navbar/page";
import GalleryBox from "plugins/Gallery/page";
-import { useEffect, useState } from "react";
+import { useContext, useEffect, useState } from "react";
import AddToCart from "@comp/Cards/Components/AddToCart/page";
import Image from "next/image";
import PersianNumber from "plugins/PersianNumber";
import logo from "../../../public/images/logo.png";
+import AppContext from "@ctx/AppContext";
+import CardNormal from "@comp/Cards/CardNormal/page";
const BrandData = ({ params, data }) => {
console.log("data brand", data);
+ const CTX = useContext(AppContext);
+ const hairCosmeticData = CTX.state.hairCosmeticData;
+
+ useEffect(() => {
+ CTX.fetchHairCosmetic();
+ }, []);
return (
<>
-
-
- محصولات موجود در وسمه با برند
- {data?.persianName}
-
+
+
+
+
+
+
+ {data?.englishName} IN VESMEH
+
+
+
+ وسمه با برند
+ {data?.persianName}
+
+
+ با تصمین کمترین قیمت در تمامی دستنه بندی ها خرید کنید{" "}
+
+
+
+
+ {hairCosmeticData?.products?.map((e) => (
+
+
+
+ ))}
+
+
+
diff --git a/components/AppsComponent/ProductData/page.jsx b/components/AppsComponent/ProductData/page.jsx
index 9d7e09a..3ccc2cf 100644
--- a/components/AppsComponent/ProductData/page.jsx
+++ b/components/AppsComponent/ProductData/page.jsx
@@ -8,18 +8,32 @@ import AddToCart from "@comp/Cards/Components/AddToCart/page";
import Image from "next/image";
import PersianNumber from "plugins/PersianNumber";
import logo from "../../../public/images/logo.png";
+import moment from "jalali-moment";
+import Chapar from "plugins/Chapar";
+import { toast } from "react-toastify";
+import { useRouter } from "next/navigation";
const ProductData = ({ params, data }) => {
console.log("data", data);
const [product, setProduct] = useState([]);
const [specificationsHeader, setSpecificationsHeader] = useState([]);
const [productBarDetail, setProductBarDetail] = useState(0);
+ const [comment, setComment] = useState("0");
+
+ const router = useRouter();
const fetchPost = async (id) => {
const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/product/${id}`);
const post = await res.json();
setProduct(post.product);
};
+ const fetchReview = async (id) => {
+ const res = await fetch(
+ `${process.env.NEXT_PUBLIC_API_URL}/product/${id}/review?page=0`
+ );
+ const post = await res.json();
+ setProduct(post.product);
+ };
const displaySpecifications = (specs) => {
let data = [];
@@ -50,8 +64,37 @@ const ProductData = ({ params, data }) => {
});
}
};
+
+ const createProductReview = async () => {
+ const body = { title: "", comment, rate: "", productId: params.id[0] };
+ try {
+ const data = await Chapar.post(
+ `${process.env.NEXT_PUBLIC_API_URL}/product/review`,
+ body
+ );
+
+ // fetchReview();
+ } catch ({ error, status }) {
+ toast.error(`${error?.response?.data?.message}`, {
+ position: "bottom-right",
+ closeOnClick: true,
+ });
+ }
+ };
+
+ const handleCreateReview = () => {
+ const token = localStorage.getItem("token");
+
+ if (token) {
+ createProductReview();
+ } else {
+ router.push("/login");
+ }
+ };
+
useEffect(() => {
fetchPost(params.id[0]);
+ fetchReview(params.id[0]);
}, []);
useEffect(() => {
@@ -136,13 +179,13 @@ const ProductData = ({ params, data }) => {
{data?.product?.files?.length > 0 ? (
CTX.setIsOpenLightBox(true)}
- alt={`${product.persianName} - ${product.englishName}`}
+ alt={`${product?.persianName} - ${product?.englishName}`}
property
loading="eager"
/>
@@ -331,15 +374,218 @@ const ProductData = ({ params, data }) => {
-
- دیدگاه مخاطبان{" "}
-
+
+
+ دیدگاه مخاطبان{" "}
+
+
-
+
+
+
+
+
+
محدثه سروری پور
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت
+ چاپ و با استفاده از طراحان گرافیک است
+
+
+
+
+
+
+
+
+
+
+
+ پشتیبانی فروشگاه وسمه - آقای حیدریان
+
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت
+ چاپ و با استفاده از طراحان گرافیک است چاپگرها و متون
+ بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و
+ برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع
+ با هدف بهبود ابزارهای کاربردی می باشد
+
+
+
+
+
+
+
+
+
+
+
حسین معصومی
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم{" "}
+
+
+
+
+
+
+
+
+
+
+
ماهان قیصرزاده
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت
+ چاپ و با استفاده از طراحان گرافیک است چاپگرها و متون
+ بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و
+ برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع
+ با هدف بهبود ابزارهای کاربردی می باشد کتابهای زیادی در
+ شصت و سه درصد گذشته حال و آینده شناخت فراوان جامعه و
+ متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را
+ برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ
+ پیشرو در زبان فارسی ایجاد کرد در این صورت می توان امید
+ داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط
+ سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی
+ دستاوردهای اصلی
+
+
+
+
+
+
+
+
+
+
+
+ پشتیبانی فروشگاه وسمه - آقای حیدریان
+
+
+
+
+
+
+ لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت
+ چاپ و با استفاده از طراحان گرافیک است چاپگرها و متون
+ بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و
+ برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع
+ با هدف بهبود ابزارهای کاربردی می باشد
+
+
+
+
+
+
+
+
+
دیدگاه خود را وارد کنید
{" "}
+
+ {/*
+
*/}
{" "}
diff --git a/src/app/products/[...id]/page.jsx b/src/app/products/[...id]/page.jsx
index 428f506..3d5455b 100644
--- a/src/app/products/[...id]/page.jsx
+++ b/src/app/products/[...id]/page.jsx
@@ -30,15 +30,61 @@ export async function generateMetadata({ params }) {
`products/${params.id[0]}/${data?.product?.persianName}`,
process.env.NEXT_PUBLIC_APP_URL
);
+
+ // Structured Data
+ const productSchema = {
+ "@context": "https://schema.org/",
+ "@type": "Product",
+ name: data?.product?.persianName,
+ image: imageUrl.toString() || "https://example.com/default-image.jpg", // Provide a default image if none exists
+ description:
+ data?.product?.summery ||
+ `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
+ sku: data?.product?.id,
+ brand: {
+ "@type": "Brand",
+ name: data?.product?.brandName || "نام برند",
+ },
+ offers: {
+ "@type": "Offer",
+ url: metadataUrl.toString(),
+ priceCurrency: "IRR",
+ price: (data?.product?.costWithDiscount / 10).toString() || "0",
+ itemCondition: "https://schema.org/NewCondition",
+ availability:
+ data?.product?.stock > 0
+ ? "https://schema.org/InStock"
+ : "https://schema.org/OutOfStock",
+ seller: {
+ "@type": "Organization",
+ name: "Vesmeh Store",
+ },
+ },
+ aggregateRating: {
+ "@type": "AggregateRating",
+ ratingValue:
+ data?.product?.reviews.length > 0
+ ? (
+ data?.product?.reviews.reduce(
+ (acc, review) => acc + review.rating,
+ 0
+ ) / data?.product?.reviews.length
+ ).toFixed(1)
+ : "4.5", // Default rating if no reviews
+ reviewCount: data?.product?.reviews.length.toString() || "0",
+ },
+ };
+
return {
title: data?.product?.persianName,
- description: `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
+ description:
+ data?.product?.summery ||
+ `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
metadataBase: metadataUrl,
product_id_meta: data?.product?.id,
alternates: {
canonical: metadataUrl,
},
-
keywords: [
"آرایشی",
"بهداشت خانگی",
@@ -46,19 +92,21 @@ export async function generateMetadata({ params }) {
"لوازم تمیزی",
"مراقبت شخصی",
],
-
openGraph: {
title: data?.product?.persianName,
- description: ` خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
- images: [imageUrl],
+ description:
+ data?.product?.summery ||
+ `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
+ images: [imageUrl.toString()],
url: metadataUrl,
type: "website",
locale: "fa-IR",
- type: "website",
},
twitter: {
site: "@vesmehstore",
- description: ` خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
+ description:
+ data?.product?.summery ||
+ `خرید ${data?.product?.persianName}| برندهای متنوع با پایین ترین قیمت | فروشگاه اینترنتی وسمه`,
title: data?.product?.persianName,
creator: "@vesmehstore",
},
@@ -68,7 +116,17 @@ export async function generateMetadata({ params }) {
product_price: data?.product?.costWithDiscount / 10,
product_old_price: data?.product?.cost / 10,
availability: data?.product?.stock > 0 ? "instock" : "outofstock",
- guarantee: "guarantee_sample",
+ guarantee: data?.product?.warranty || "ضمانت دارد",
+ ratingValue:
+ data?.product?.reviews.length > 0
+ ? (
+ data?.product?.reviews.reduce(
+ (acc, review) => acc + review.rating,
+ 0
+ ) / data?.product?.reviews.length
+ ).toFixed(1)
+ : "4.5", // Default rating if no reviews
+ reviewCount: data?.product?.reviews.length.toString() || "0",
},
};
}
diff --git a/style/globals.css b/style/globals.css
index a40b53f..d779746 100644
--- a/style/globals.css
+++ b/style/globals.css
@@ -236,3 +236,30 @@ body::-webkit-scrollbar-track {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
+
+.bet-text {
+ background: -webkit-linear-gradient(
+ 90deg,
+ #ffffff,
+ #ffffff,
+ #0966a5a6,
+ #053758a6
+ );
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ opacity: 0.4;
+}
+
+.bet-text-green {
+ background: -webkit-linear-gradient(
+ 90deg,
+ #044f8b73,
+ #01276e98,
+ #86859198,
+ #ffffff,
+ #ffffff
+ );
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ opacity: 0.3;
+}