diff --git a/package-lock.json b/package-lock.json index dd994f5..272031c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,9 @@ "name": "nguyencongpc", "version": "0.1.0", "dependencies": { + "@fancyapps/ui": "^6.1.7", "@tippyjs/react": "^4.2.6", + "framer-motion": "^12.23.26", "next": "16.0.10", "postcss": "^8.5.6", "react": "19.2.1", @@ -462,6 +464,12 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fancyapps/ui": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@fancyapps/ui/-/ui-6.1.7.tgz", + "integrity": "sha512-KHOvuy90JBFDgbNa2V1N9Jg7PE/lSQMXN9VbhR+WQSIxIEi4PV7kndeao7ezir5WeJ8OZRyDelNKJVLicXfBIg==", + "license": "SEE LICENSE IN LICENSE.md" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -3650,6 +3658,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/framer-motion": { + "version": "12.23.26", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.26.tgz", + "integrity": "sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.23", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4965,6 +5000,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/motion-dom": { + "version": "12.23.23", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", + "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/package.json b/package.json index eba7400..96b59d1 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "lint": "eslint" }, "dependencies": { + "@fancyapps/ui": "^6.1.7", "@tippyjs/react": "^4.2.6", + "framer-motion": "^12.23.26", "next": "16.0.10", "postcss": "^8.5.6", "react": "19.2.1", diff --git a/src/app/[slug]/page.tsx b/src/app/[slug]/page.tsx index e32b3b1..4b1eb41 100644 --- a/src/app/[slug]/page.tsx +++ b/src/app/[slug]/page.tsx @@ -1,17 +1,22 @@ 'use client'; import { useParams } from 'next/navigation'; -import { productCategoryData } from '@/data/product/category'; +import CategoryPage from '@/components/product/Category'; +import ProductDetailPage from '@/components/product/ProductDetail'; -// import component -import CategoryPage from '@components/layout/product/Category'; +import { resolvePageType } from '@/lib/resolvePageType'; export default function DynamicPage() { - const params = useParams(); - const slug = ('/' + params?.slug) as string; + const { slug } = useParams(); + const fullSlug = '/' + slug; - if (productCategoryData.find((c) => c.current_category.url == slug)) { - return ; + const pageType = resolvePageType(fullSlug); + + switch (pageType) { + case 'category': + return ; + case 'product': + return ; + default: + return
404 Không tìm thấy
; } - - return
404 Không tìm thấy
; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5402918..cac05e5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -5,8 +5,8 @@ import 'swiper/css'; import 'swiper/css/navigation'; import 'swiper/css/pagination'; import '@styles/globals.css'; -import Header from '@/components/layout/other/Header'; -import Footer from '@/components/layout/other/Footer'; +import Header from '@/components/other/Header'; +import Footer from '@/components/other/Footer'; import PreLoader from '@components/common/PreLoader'; diff --git a/src/app/page.tsx b/src/app/page.tsx index f061c05..1622776 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import Home from '@components/layout/home'; +import Home from '@/components/home'; import { Metadata } from 'next'; export const metadata: Metadata = { diff --git a/src/components/common/error/index.tsx b/src/components/common/error/index.tsx new file mode 100644 index 0000000..4e00f78 --- /dev/null +++ b/src/components/common/error/index.tsx @@ -0,0 +1,59 @@ +import Link from 'next/link'; +import { motion } from 'framer-motion'; + +export const ErrorLink = () => { + return ( +
+ + {/* Icon lỗi link */} + + + + + + +

Đường dẫn không hợp lệ

+ +

+ Bạn truy cập không tồn tại hoặc đường dẫn đã bị thay đổi. +

+ + {/* CTA */} +
+ + ← Về trang chủ + + + + Xem tất cả sản phẩm + +
+
+
+ ); +}; diff --git a/src/components/layout/home/BoxArticle/ItemArticle/index.tsx b/src/components/home/Article/ItemArticle/index.tsx similarity index 100% rename from src/components/layout/home/BoxArticle/ItemArticle/index.tsx rename to src/components/home/Article/ItemArticle/index.tsx diff --git a/src/components/layout/home/BoxArticle/dataArticle.ts b/src/components/home/Article/dataArticle.ts similarity index 100% rename from src/components/layout/home/BoxArticle/dataArticle.ts rename to src/components/home/Article/dataArticle.ts diff --git a/src/components/layout/home/BoxArticle/index.tsx b/src/components/home/Article/index.tsx similarity index 100% rename from src/components/layout/home/BoxArticle/index.tsx rename to src/components/home/Article/index.tsx diff --git a/src/components/layout/home/BoxArticleVideo/ItemArticleVideo/index.tsx b/src/components/home/ArticleVideo/ItemArticleVideo/index.tsx similarity index 100% rename from src/components/layout/home/BoxArticleVideo/ItemArticleVideo/index.tsx rename to src/components/home/ArticleVideo/ItemArticleVideo/index.tsx diff --git a/src/components/layout/home/BoxArticleVideo/dataArticle.ts b/src/components/home/ArticleVideo/dataArticle.ts similarity index 100% rename from src/components/layout/home/BoxArticleVideo/dataArticle.ts rename to src/components/home/ArticleVideo/dataArticle.ts diff --git a/src/components/layout/home/BoxArticleVideo/index.tsx b/src/components/home/ArticleVideo/index.tsx similarity index 100% rename from src/components/layout/home/BoxArticleVideo/index.tsx rename to src/components/home/ArticleVideo/index.tsx diff --git a/src/components/layout/home/BoxCategory/index.tsx b/src/components/home/Category/index.tsx similarity index 96% rename from src/components/layout/home/BoxCategory/index.tsx rename to src/components/home/Category/index.tsx index f63269d..466d61b 100644 --- a/src/components/layout/home/BoxCategory/index.tsx +++ b/src/components/home/Category/index.tsx @@ -8,7 +8,7 @@ import ItemProduct from '@/components/common/ItemProduct'; import { InfoCategory } from '@/types'; -import { menuData } from '@/components/layout/other/Header/menuData'; +import { menuData } from '@/components/other/Header/menuData'; import { productData } from './productData'; const BoxListCategory: React.FC = () => { diff --git a/src/components/layout/home/BoxCategory/productData.ts b/src/components/home/Category/productData.ts similarity index 100% rename from src/components/layout/home/BoxCategory/productData.ts rename to src/components/home/Category/productData.ts diff --git a/src/components/layout/home/CategoryFeature/ItemCategory/index.tsx b/src/components/home/CategoryFeature/ItemCategory/index.tsx similarity index 100% rename from src/components/layout/home/CategoryFeature/ItemCategory/index.tsx rename to src/components/home/CategoryFeature/ItemCategory/index.tsx diff --git a/src/components/layout/home/CategoryFeature/index.tsx b/src/components/home/CategoryFeature/index.tsx similarity index 100% rename from src/components/layout/home/CategoryFeature/index.tsx rename to src/components/home/CategoryFeature/index.tsx diff --git a/src/components/layout/home/BoxDeal/CounDown/index.tsx b/src/components/home/Deal/CounDown/index.tsx similarity index 100% rename from src/components/layout/home/BoxDeal/CounDown/index.tsx rename to src/components/home/Deal/CounDown/index.tsx diff --git a/src/components/layout/home/BoxDeal/ProductItem/index.tsx b/src/components/home/Deal/ProductItem/index.tsx similarity index 100% rename from src/components/layout/home/BoxDeal/ProductItem/index.tsx rename to src/components/home/Deal/ProductItem/index.tsx diff --git a/src/components/layout/home/BoxDeal/index.tsx b/src/components/home/Deal/index.tsx similarity index 100% rename from src/components/layout/home/BoxDeal/index.tsx rename to src/components/home/Deal/index.tsx diff --git a/src/components/layout/home/BoxDeal/productDealData.ts b/src/components/home/Deal/productDealData.ts similarity index 100% rename from src/components/layout/home/BoxDeal/productDealData.ts rename to src/components/home/Deal/productDealData.ts diff --git a/src/components/layout/home/BoxReviewCustomer/ItemReview/index.tsx b/src/components/home/ReviewCustomer/ItemReview/index.tsx similarity index 100% rename from src/components/layout/home/BoxReviewCustomer/ItemReview/index.tsx rename to src/components/home/ReviewCustomer/ItemReview/index.tsx diff --git a/src/components/layout/home/BoxReviewCustomer/dataReview.ts b/src/components/home/ReviewCustomer/dataReview.ts similarity index 100% rename from src/components/layout/home/BoxReviewCustomer/dataReview.ts rename to src/components/home/ReviewCustomer/dataReview.ts diff --git a/src/components/layout/home/BoxReviewCustomer/index.tsx b/src/components/home/ReviewCustomer/index.tsx similarity index 100% rename from src/components/layout/home/BoxReviewCustomer/index.tsx rename to src/components/home/ReviewCustomer/index.tsx diff --git a/src/components/layout/home/SliderHome/index.tsx b/src/components/home/SliderHome/index.tsx similarity index 100% rename from src/components/layout/home/SliderHome/index.tsx rename to src/components/home/SliderHome/index.tsx diff --git a/src/components/layout/home/index.tsx b/src/components/home/index.tsx similarity index 75% rename from src/components/layout/home/index.tsx rename to src/components/home/index.tsx index a71dcb8..9b23cc9 100644 --- a/src/components/layout/home/index.tsx +++ b/src/components/home/index.tsx @@ -1,11 +1,11 @@ import React from 'react'; import SliderHome from './SliderHome'; -import BoxProductDeal from './BoxDeal'; +import BoxProductDeal from './Deal'; import CategoryFeature from './CategoryFeature'; -import BoxListCategory from './BoxCategory'; -import BoxArticle from './BoxArticle'; -import BoxArticleVideo from './BoxArticleVideo'; -import BoxReviewCustomer from './BoxReviewCustomer'; +import BoxListCategory from './Category'; +import BoxArticle from './Article'; +import BoxArticleVideo from './ArticleVideo'; +import BoxReviewCustomer from './ReviewCustomer'; const Home = () => { return ( diff --git a/src/components/layout/other/Footer/IconFixRight/index.tsx b/src/components/other/Footer/IconFixRight/index.tsx similarity index 100% rename from src/components/layout/other/Footer/IconFixRight/index.tsx rename to src/components/other/Footer/IconFixRight/index.tsx diff --git a/src/components/layout/other/Footer/index.tsx b/src/components/other/Footer/index.tsx similarity index 100% rename from src/components/layout/other/Footer/index.tsx rename to src/components/other/Footer/index.tsx diff --git a/src/components/layout/other/Header/HeaderBottom/HeaderBottomRight.tsx b/src/components/other/Header/HeaderBottom/HeaderBottomRight.tsx similarity index 100% rename from src/components/layout/other/Header/HeaderBottom/HeaderBottomRight.tsx rename to src/components/other/Header/HeaderBottom/HeaderBottomRight.tsx diff --git a/src/components/layout/other/Header/HeaderBottom/index.tsx b/src/components/other/Header/HeaderBottom/index.tsx similarity index 100% rename from src/components/layout/other/Header/HeaderBottom/index.tsx rename to src/components/other/Header/HeaderBottom/index.tsx diff --git a/src/components/layout/other/Header/HeaderMid/index.tsx b/src/components/other/Header/HeaderMid/index.tsx similarity index 100% rename from src/components/layout/other/Header/HeaderMid/index.tsx rename to src/components/other/Header/HeaderMid/index.tsx diff --git a/src/components/layout/other/Header/HeaderTop/index.tsx b/src/components/other/Header/HeaderTop/index.tsx similarity index 100% rename from src/components/layout/other/Header/HeaderTop/index.tsx rename to src/components/other/Header/HeaderTop/index.tsx diff --git a/src/components/layout/other/Header/index.tsx b/src/components/other/Header/index.tsx similarity index 100% rename from src/components/layout/other/Header/index.tsx rename to src/components/other/Header/index.tsx diff --git a/src/components/layout/other/Header/menuData.ts b/src/components/other/Header/menuData.ts similarity index 100% rename from src/components/layout/other/Header/menuData.ts rename to src/components/other/Header/menuData.ts diff --git a/src/components/layout/product/Category/BannerCategory/index.tsx b/src/components/product/Category/BannerCategory/index.tsx similarity index 100% rename from src/components/layout/product/Category/BannerCategory/index.tsx rename to src/components/product/Category/BannerCategory/index.tsx diff --git a/src/components/layout/product/Category/BoxFilter/ActiveFilters/index.tsx b/src/components/product/Category/BoxFilter/ActiveFilters/index.tsx similarity index 100% rename from src/components/layout/product/Category/BoxFilter/ActiveFilters/index.tsx rename to src/components/product/Category/BoxFilter/ActiveFilters/index.tsx diff --git a/src/components/layout/product/Category/BoxFilter/index.tsx b/src/components/product/Category/BoxFilter/index.tsx similarity index 100% rename from src/components/layout/product/Category/BoxFilter/index.tsx rename to src/components/product/Category/BoxFilter/index.tsx diff --git a/src/components/layout/product/Category/BoxSort/index.tsx b/src/components/product/Category/BoxSort/index.tsx similarity index 100% rename from src/components/layout/product/Category/BoxSort/index.tsx rename to src/components/product/Category/BoxSort/index.tsx diff --git a/src/components/layout/product/Category/ItemCategoryChild/index.tsx b/src/components/product/Category/ItemCategoryChild/index.tsx similarity index 89% rename from src/components/layout/product/Category/ItemCategoryChild/index.tsx rename to src/components/product/Category/ItemCategoryChild/index.tsx index e5057f9..3627f91 100644 --- a/src/components/layout/product/Category/ItemCategoryChild/index.tsx +++ b/src/components/product/Category/ItemCategoryChild/index.tsx @@ -13,7 +13,7 @@ const ItemCategoryChild: React.FC = ({ item }) => { ? item.big_image : item.thumnail ? item.thumnail - : '/static/assets/nguyencong_2023/images/favicon.png'; + : 'https://nguyencongpc.vn/static/assets/nguyencong_2023/images/favicon.png'; return (
  • diff --git a/src/components/layout/product/Category/index.tsx b/src/components/product/Category/index.tsx similarity index 97% rename from src/components/layout/product/Category/index.tsx rename to src/components/product/Category/index.tsx index 7d7f7cf..40203ff 100644 --- a/src/components/layout/product/Category/index.tsx +++ b/src/components/product/Category/index.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Link from 'next/link'; import type { CategoryData } from '@/types'; import { productCategoryData } from '@/data/product/category'; -import { findCategoryBySlug } from '@/lib/category'; +import { findCategoryBySlug } from '@/lib/product/category'; // box import { Breadcrumb } from '@components/common/Breadcrumb'; @@ -18,7 +18,7 @@ interface CategoryPageProps { } const CategoryPage: React.FC = ({ slug }) => { - // Ép kiểu dữ liệu từ index.ts về CategoryData[] nếu cần + // Ép kiểu dữ liệu từ index.ts về CategoryData[] const categories = productCategoryData as unknown as CategoryData[]; const currentCategory = findCategoryBySlug(slug, categories); diff --git a/src/components/product/ProductDetail/ImageProduct/index.tsx b/src/components/product/ProductDetail/ImageProduct/index.tsx new file mode 100644 index 0000000..a4a5848 --- /dev/null +++ b/src/components/product/ProductDetail/ImageProduct/index.tsx @@ -0,0 +1,77 @@ +import { useState, useEffect } from 'react'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import { Autoplay, Navigation, Pagination, Thumbs } from 'swiper/modules'; +import Image from 'next/image'; +import Link from 'next/link'; +import { ProductImageGallery } from '@/types'; +import type { Swiper as SwiperType } from 'swiper'; +import '@fancyapps/ui/dist/fancybox/fancybox.css'; +import { Fancybox, type FancyboxOptions } from '@fancyapps/ui'; + +interface ImageProps { + ItemImage: ProductImageGallery[]; +} + +export const ImageProduct: React.FC = ({ ItemImage }) => { + const [thumbsSwiper, setThumbsSwiper] = useState(null); + + useEffect(() => { + if (typeof window === 'undefined') return; + + Fancybox.bind("[data-fancybox='gallery']", { + dragToClose: true, + Toolbar: { + display: { + left: [], + middle: ['counter'], + right: ['zoom', 'close'], + }, + }, + Thumbs: { autoStart: false }, + } as any); + + return () => { + Fancybox.unbind("[data-fancybox='gallery']"); + Fancybox.close(); + }; + }, []); + + return ( +
    +
    + + {ItemImage?.map((item, index) => ( + + + {''} + + + ))} + +
    +
    + + {ItemImage?.map((item, index) => ( + +
    + {''} +
    +
    + ))} +
    +
    +
    + ); +}; diff --git a/src/components/product/ProductDetail/index.tsx b/src/components/product/ProductDetail/index.tsx new file mode 100644 index 0000000..02e898e --- /dev/null +++ b/src/components/product/ProductDetail/index.tsx @@ -0,0 +1,51 @@ +'use client'; +import React from 'react'; +import Link from 'next/link'; +import type { ProductDetailData } from '@/types'; +import { productDetailData } from '@/data/product/detail'; +import { findProductDetailBySlug } from '@/lib/product/productdetail'; +import { ErrorLink } from '@components/common/error'; + +import { Breadcrumb } from '@components/common/Breadcrumb'; +import { ImageProduct } from './ImageProduct'; + +interface ProductDetailPageProps { + slug: string; +} + +const ProductDetailPage: React.FC = ({ slug }) => { + const productDetails = productDetailData as unknown as ProductDetailData[]; + const Products = findProductDetailBySlug(slug, productDetails); + + const breadcrumbItems = Products?.product_info?.productPath?.[0]?.path.map((item) => ({ + name: item.name, + url: item.url, + })) ?? [{ name: 'Trang chủ', url: '/' }]; + + // Trường hợp không tìm thấy chi tiết sản phẩm + // Không tìm thấy chi tiết sản phẩm + if (!Products) { + return ; + } + + return ( + <> +
    + +
    +
    +
    +
    +
    + {/* image product */} + +
    +
    +
    +
    +
    + + ); +}; + +export default ProductDetailPage; diff --git a/src/data/product/detail/index.ts b/src/data/product/detail/index.ts new file mode 100644 index 0000000..7627f72 --- /dev/null +++ b/src/data/product/detail/index.ts @@ -0,0 +1,5266 @@ +export const productDetailData = [ + { + keywords: + 'PC Gaming Ryzen 5 5500, m\u00e1y t\u00ednh ch\u01a1i game gi\u00e1 r\u1ebb, PC Gaming 16GB RAM, b\u1ed9 PC t\u1eb7ng m\u00e0n h\u00ecnh, c\u1ea5u h\u00ecnh ch\u01a1i game gi\u00e1 t\u1ed1t, PC Gaming AMD, m\u00e1y t\u00ednh ch\u01a1i game Nguy\u1ec5n C\u00f4ng PC', + description: + 'B\u1ed9 PC Gaming Ryzen 5 5500, RAM 16GB, VGA 4GB chi\u1ebfn m\u01b0\u1ee3t m\u1ecdi t\u1ef1a game. \u01afu \u0111\u00e3i c\u1ef1c l\u1edbn: T\u1eb6NG K\u00c8M M\u00c0N H\u00ccNH khi mua m\u00e1y... Ch\u00ednh h\u00e3ng t\u1ea1i Nguy\u1ec5n C\u00f4ng PC.', + title: 'B\u1ed9 PC Gaming AMD Ryzen 5 5500, RAM 16GB, VGA 4GB', + favicon: '', + canonical: '\/bts-gaming-02', + image: '', + product_info: { + id: '25404', + productId: '25404', + isOn: '1', + productPath: [ + { + path: [ + { + id: '1829', + url: '\/pc-gaming', + name: 'PC GAMING', + }, + { + id: '3468', + url: '\/chon-theo-nhu-cau-1', + name: 'CH\u1eccN THEO NHU C\u1ea6U', + }, + { + id: '3432', + url: '\/pc-esport', + name: 'PC ESPORT', + }, + ], + path_url: + 'PC GAMING<\/a> >> CH\u1eccN THEO NHU C\u1ea6U<\/a> >> PC ESPORT<\/a>', + }, + { + path: [ + { + id: '1829', + url: '\/pc-gaming', + name: 'PC GAMING', + }, + ], + path_url: 'PC GAMING<\/a>', + }, + { + path: [ + { + id: '1829', + url: '\/pc-gaming', + name: 'PC GAMING', + }, + { + id: '3469', + url: '\/chon-theo-khoang-gia-1', + name: 'CH\u1eccN THEO KHO\u1ea2NG GI\u00c1', + }, + { + id: '3471', + url: '\/5-trieu-15-trieu', + name: '5 Tri\u1ec7u - 15 Tri\u1ec7u', + }, + ], + path_url: + 'PC GAMING<\/a> >> CH\u1eccN THEO KHO\u1ea2NG GI\u00c1<\/a> >> 5 Tri\u1ec7u - 15 Tri\u1ec7u<\/a>', + }, + { + path: [ + { + id: '1829', + url: '\/pc-gaming', + name: 'PC GAMING', + }, + { + id: '3468', + url: '\/chon-theo-nhu-cau-1', + name: 'CH\u1eccN THEO NHU C\u1ea6U', + }, + ], + path_url: + 'PC GAMING<\/a> >> CH\u1eccN THEO NHU C\u1ea6U<\/a>', + }, + ], + productModel: '', + productSKU: '', + productUrl: '\/bts-gaming-02', + productName: + 'B\u1ed9 PC Gaming AMD Ryzen 5 5500, RAM 16GB, VGA 4GB [T\u1eb6NG M\u00c0N H\u00ccNH]', + productImage: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + }, + price: '11690000', + quantity: '1', + currency: 'vnd', + priceUnit: 'chi\u1ebfc', + marketPrice: '13990000', + brand: { + id: '124', + brand_index: 'ncpc', + name: 'NCPC', + summary: + 'NCPC cung c\u1ea5p c\u00e1c lo\u1ea1i server, workstation d\u00f9ng cho render, \u0111\u1ed3 h\u1ecda, Youtube, gaming, c\u00e1c s\u1ea3n ph\u1ea9m pc \u0111\u1ed3ng b\u1ed9 cho doanh nghi\u1ec7p...', + image: '', + product: '0', + status: '1', + is_featured: '0', + ordering: '0', + letter: 'N', + lastUpdate: '0000-00-00 00:00:00', + brand_page_view: '0', + meta_title: 'M\u00e1y T\u00ednh Nguy\u1ec5n C\u00f4ng', + meta_keywords: 'nguyencongpc, ncpc workstation, ncpc , ncpc gaming', + meta_description: + 'NCPC cung c\u1ea5p c\u00e1c lo\u1ea1i server, workstation d\u00f9ng cho render, \u0111\u1ed3 h\u1ecda, Youtube, gaming, c\u00e1c s\u1ea3n ph\u1ea9m pc \u0111\u1ed3ng b\u1ed9 cho doanh nghi\u1ec7p...', + description: + '
    Gi\u1edbi thi\u1ec7u chung v\u1ec1 Nguy\u1ec5n C\u00f4ng PC<\/strong><\/div>\r\n
    Nguy\u1ec5n C\u00f4ng PC \u0111\u00e3 tr\u1ea3i qua nhi\u1ec1u n\u0103m ho\u1ea1t \u0111\u1ed9ng v\u00e0 c\u00f3 \u0111\u01b0\u1ee3c nh\u1eefng b\u01b0\u1edbc ph\u00e1t tri\u1ec3n m\u1ea1nh m\u1ebd v\u1edbi ph\u01b0\u01a1ng ch\u00e2m ph\u1ee5c v\u1ee5 kh\u00e1ch h\u00e0ng t\u1eadn t\u1ee5y, lu\u00f4n l\u1ea5y kh\u00e1ch h\u00e0ng l\u00e0 trung t\u00e2m. Ch\u00fang t\u00f4i \u0111\u00e3 t\u1eebng b\u01b0\u1edbc kh\u1eb3ng \u0111\u1ecbnh s\u1ef1 t\u00edn nhi\u1ec7m trong l\u00f2ng kh\u00e1ch h\u00e0ng, tr\u1edf th\u00e0nh m\u1ed9t c\u00f4ng ty cung c\u1ea5p c\u00e1c lo\u1ea1i server, workstation d\u00f9ng cho render, \u0111\u1ed3 h\u1ecda, Youtube, gaming, c\u00e1c s\u1ea3n ph\u1ea9m pc \u0111\u1ed3ng b\u1ed9 cho doanh nghi\u1ec7p...\u0111\u00e1ng t\u00edn c\u1eady. Hi\u1ec7n nay, Nguy\u1ec5n C\u00f4ng PC l\u00e0 \u0111\u1ed1i t\u00e1c l\u1edbn c\u1ee7a c\u00e1c t\u1eadp \u0111o\u00e0n c\u00f4ng ngh\u1ec7 nh\u01b0: Intel, Asus, MSI, Asrock, AMD, NDIVIA, Gigabyte... V\u1edbi quy tr\u00ecnh ho\u1ea1t \u0111\u1ed9ng chuy\u00ean nghi\u1ec7p tr\u00ean \u0111\u1ecba b\u00e0n H\u00e0 N\u1ed9i v\u00e0 to\u00e0n qu\u1ed1c.<\/em><\/div>\r\n
    S\u1ee9 m\u1ec7nh c\u1ee7a c\u00f4ng ty<\/strong><\/div>\r\n
    - Tr\u1edf th\u00e0nh nh\u1eefng ng\u01b0\u1eddi b\u1ea1n \u0111\u1ed3ng h\u00e0nh tin c\u1eady, ti\u1ebfp b\u01b0\u1edbc th\u00e0nh c\u00f4ng c\u1ee7a kh\u00e1ch h\u00e0ng, lu\u00f4n ph\u00e1t tri\u1ec3n m\u1ea1nh m\u1ebd v\u00e0 v\u1eefng v\u00e0ng \u0111\u1ec3 mang l\u1ea1i cho kh\u00e1ch h\u00e0ng nh\u1eefng s\u1ea3n ph\u1ea9m ch\u1ea5t l\u01b0\u1ee3ng v\u00e0 d\u1ecbch v\u1ee5 t\u1ed1i \u01b0u.<\/div>\r\n
    - X\u00e2y d\u1ef1ng Nguy\u1ec5n C\u00f4ng PC tr\u1edf th\u00e0nh m\u1ed9t m\u00f4i tr\u01b0\u1eddng l\u00e0m vi\u1ec7c chuy\u00ean nghi\u1ec7p n\u01a1i m\u00e0 m\u1ecdi c\u00e1 nh\u00e2n ph\u00e1t huy t\u1ed1i \u0111a s\u1ee9c s\u00e1ng t\u1ea1o, n\u0103ng l\u1ef1c c\u1ee7a b\u1ea3n th\u00e2n.<\/div>\r\n
    - X\u00e2y d\u1ef1ng Nguy\u1ec5n C\u00f4ng PC tr\u1edf th\u00e0nh ng\u00f4i nh\u00e0 chung cho m\u1ecdi c\u00e1n b\u1ed9 nh\u00e2n vi\u00ean c\u00f9ng nhau ph\u00e1t tri\u00ean, chia s\u1ebb quy\u1ec1n l\u1ee3i, tr\u00e1ch nhi\u1ec7m v\u00e0 ngh\u0129a v\u1ee5 c\u00f4ng b\u1eb1ng, minh b\u1ea1ch nh\u1ea5t.<\/div>\r\n
    T\u1ea7m nh\u00ecn<\/strong><\/div>\r\n
    Kh\u00e1t v\u1ecdng m\u1edf r\u1ed9ng, v\u01b0\u01a1n xa, chinh ph\u1ee5c kh\u00e1ch h\u00e0ng, mong mu\u1ed1n t\u1ed1i \u0111a h\u00f3a l\u1ee3i \u00edch kh\u00e1ch h\u00e0ng \u0111\u00e3 th\u00fac \u0111\u1ea9y C\u00f4ng ty TNHH M\u00e1y T\u00ednh Nguy\u1ec5n C\u00f4ng<\/span> lu\u00f4n n\u1ed7 l\u1ef1c h\u1ebft m\u00ecnh<\/span>, ph\u1ea5n \u0111\u1ea5u tr\u1edf th\u00e0nh c\u00f4ng ty quy m\u00f4 v\u00e0 chuy\u00ean nghi\u1ec7p trong l\u0129nh v\u1ef1c m\u00e1y t\u00ednh cung c\u1ea5p: Server Workstation \u0111\u1ed3 h\u1ecda chuy\u00ean nghi\u1ec7p... v\u00e0 c\u00e1c c\u00f4ng ngh\u1ec7 m\u1edbi.<\/div>', + }, + productSummary: + 'CPU AMD Ryzen 5 5500 (3,6 GHz Boost 4,2 GHz | 6 Cores \/ 12 Threads | 16 MB Cache| PCIe 3.0)\r\nMain Gigabyte A520M-K V2\r\nRAM Simorchip DDR4 16GB 3200MHz (H\u1ed7 tr\u1ee3 Intel\/AMD)\r\nSSD DAHUA C910N 512GB M.2 NVMe PCIe Gen 3.0 x4 (DHI-SSD-C910N512G)\r\nVGA Colorful GT 1030 4GB Single Fan\r\nNgu\u1ed3n Segotep SG D600A U5 500W \u0110en\/Black\r\nCase MIK LV12 MINI FLOW - BLACK\r\nT\u1ea3n nhi\u1ec7t ID-Cooling SE-904-XT ARGB BLACK', + package_accessory: '', + productImageGallery: [ + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-01.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-01.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-01.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-03.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-03.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-03.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-02.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-02.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-02.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-05.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-05.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-05.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-14.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-14.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-14.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-07.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-07.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-07.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-08.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-08.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-08.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-19.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-19.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-19.jpg', + }, + alt: '', + folder: 'standard', + }, + { + size: { + small: + 'https://nguyencongpc.vn\/media\/product\/75-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + large: + 'https://nguyencongpc.vn\/media\/product\/250-25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + original: + 'https://nguyencongpc.vn\/media\/product\/25404-pc-gaming-amd-ryzen-5-5500-ram-16gb-vga-4gb-018.jpg', + }, + alt: '', + folder: 'standard', + }, + ], + productImageCount: '10', + warranty: 'B\u1ea3o h\u00e0nh theo t\u1eebng linh ki\u1ec7n', + specialOffer: { + other: [ + { + id: '0', + title: + '

    T\u1eb7ng Màn Hình<\/span> :  VSP IP2407SG - 24 INCH - 100HZ - 1MS<\/span><\/p>\r\n

    =>> Không l\u1ea5y quà t\u1eb7ng màn hình: Giá PC là 10.290.000<\/span>\u0111<\/span><\/strong><\/span><\/p>\r\n

    - Xem thêm km: khuyenmai.nguyencongpc.vn\/build-pc<\/a><\/span><\/span><\/div>\r\n

    <\/a><\/p>', + type: '', + thumbnail: '', + cash_value: '0', + quantity: '1', + from_time: '', + to_time: '', + url: '', + description: '', + status: '1', + }, + ], + all: [ + { + id: '0', + title: + '

    T\u1eb7ng Màn Hình<\/span> :  VSP IP2407SG - 24 INCH - 100HZ - 1MS<\/span><\/p>\r\n

    =>> Không l\u1ea5y quà t\u1eb7ng màn hình: Giá PC là 10.290.000<\/span>\u0111<\/span><\/strong><\/span><\/p>\r\n

    - Xem thêm km: khuyenmai.nguyencongpc.vn\/build-pc<\/a><\/span><\/span><\/div>\r\n

    <\/a><\/p>', + type: '', + thumbnail: '', + cash_value: '0', + quantity: '1', + from_time: '', + to_time: '', + url: '', + description: '', + status: '1', + }, + ], + }, + specialOfferGroup: [], + shipping: '0', + visit: '126308', + status: '1', + configCount: '0', + buy_count: '38', + has_video: '0', + manual_url: '0', + hasVAT: '0', + productType: { + isNew: '0', + isHot: '0', + isBestSale: '0', + isSaleOff: '0', + 'online-only': '0', + }, + condition: 'M\u1edbi', + config_count: '0', + configurable: '0', + component_count: '0', + component_parts: [], + extend: { + buy_count: '464', + pixel_code: '', + review_count: '64', + review_score: '4.8', + }, + variant_option: [], + meta_title: 'B\u1ed9 PC Gaming AMD Ryzen 5 5500, RAM 16GB, VGA 4GB', + meta_keyword: + 'PC Gaming Ryzen 5 5500, m\u00e1y t\u00ednh ch\u01a1i game gi\u00e1 r\u1ebb, PC Gaming 16GB RAM, b\u1ed9 PC t\u1eb7ng m\u00e0n h\u00ecnh, c\u1ea5u h\u00ecnh ch\u01a1i game gi\u00e1 t\u1ed1t, PC Gaming AMD, m\u00e1y t\u00ednh ch\u01a1i game Nguy\u1ec5n C\u00f4ng PC', + meta_description: + 'B\u1ed9 PC Gaming Ryzen 5 5500, RAM 16GB, VGA 4GB chi\u1ebfn m\u01b0\u1ee3t m\u1ecdi t\u1ef1a game. \u01afu \u0111\u00e3i c\u1ef1c l\u1edbn: T\u1eb6NG K\u00c8M M\u00c0N H\u00ccNH khi mua m\u00e1y... Ch\u00ednh h\u00e3ng t\u1ea1i Nguy\u1ec5n C\u00f4ng PC.', + bulk_price: [], + thum_poster: '0', + thum_poster_type: '', + productDescription: + '

    B\u1ed9 PC Gaming AMD Ryzen 5 5500, RAM 16GB, VGA 4GB<\/strong> là s\u1ef1 l\u1ef1a ch\u1ecdn không th\u1ec3 b\u1ecf qua dành cho Game Th\u1ee7 Esports<\/strong> và H\u1ecdc sinh, Sinh viên<\/strong> \u0111ang tìm ki\u1ebfm m\u1ed9t b\u1ed9 máy tính v\u1eeba túi ti\u1ec1n nh\u01b0ng v\u1eabn s\u1edf h\u1eefu v\u1ebb ngoài \u0111\u1eb9p \u0111\u1ebd và hi\u1ec7n \u0111\u1ea1i.<\/em><\/p>\r\n

    V\u1edbi trái tim là CPU Ryzen 5 5500 s\u1edf h\u1eefu 6 nhân 12 lu\u1ed3ng m\u1ea1nh m\u1ebd, chi\u1ebfc máy này không ch\u1ec9 chi\u1ebfn m\u01b0\u1ee3t các t\u1ef1a game Esport qu\u1ed1c dân nh\u01b0 Liên Minh Huy\u1ec1n Tho\u1ea1i, Valorant, FIFA Online 4 hay CS:GO<\/strong> \u1edf m\u1ee9c thi\u1ebft l\u1eadp h\u1ee3p lý, mà còn x\u1eed lý c\u1ef1c t\u1ed1t các tác v\u1ee5 h\u1ecdc t\u1eadp, v\u0103n phòng và thi\u1ebft k\u1ebf \u0111\u1ed3 h\u1ecda 2D nh\u1eb9 nhàng trên Canva hay Photoshop. \u0110i\u1ec3m \u0103n ti\u1ec1n nh\u1ea5t chính là thi\u1ebft k\u1ebf v\u1ecf case kính Panorama hi\u1ec7n \u0111\u1ea1i<\/strong>, bi\u1ebfn b\u1ed9 PC không ch\u1ec9 là công c\u1ee5 làm vi\u1ec7c mà còn là m\u1ed9t món \u0111\u1ed3 trang trí \u0111\u1ea7y công ngh\u1ec7 cho không gian cá nhân.<\/em><\/p>\r\n