Quản lý danh mục sản phẩm và sản phẩm

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 6 tháng 4, 2025

Sản phẩm và danh mục là hai thành phần cốt lõi tạo nên mọi cửa hàng online. EC-CUBE cung cấp giao diện quản trị mạnh mẽ để bạn có thể:

  • Tạo danh mục, liên kết sản phẩm.
  • Quản lý các thuộc tính như giá, ảnh, tag, trạng thái hiển thị.
  • Truy xuất sản phẩm theo danh mục trong frontend.

Bài học này hướng dẫn bạn sử dụng đúng giao diện quản trị, hiểu cấu trúc database và thực hành truy vấn sản phẩm theo danh mục.

Quản lý danh mục sản phẩm và sản phẩm

1. Thêm danh mục, liên kết sản phẩm

  • Truy cập admin → [Sản phẩm] → [Quản lý danh mục]
  • Có thể tạo danh mục cha/con, hỗ trợ phân tầng đa cấp.
  • Khi tạo hoặc chỉnh sửa sản phẩm, bạn có thể:
    • Tick chọn danh mục sản phẩm liên quan (có thể chọn nhiều).

Danh mục hiển thị dạng cây phân cấp, giúp phân loại sản phẩm tốt hơn.

2. Quản lý thuộc tính sản phẩm

Trong EC-CUBE, mỗi sản phẩm có thể bao gồm:

Thuộc tính Vai trò
Tên sản phẩm Tên hiển thị cho người dùng
Giá bán Giá cơ bản của sản phẩm
Ảnh sản phẩm Hình ảnh hiển thị trên frontend
Mô tả ngắn/dài Hiển thị ở trang chi tiết hoặc danh sách
Tags Gắn thẻ cho sản phẩm để dễ lọc và SEO
Sản phẩm hiển thị Có/không (hiện/ẩn sản phẩm khỏi frontend)

Có thể thêm các thuộc tính mở rộng bằng cách sử dụng:

  • Plugin custom field
  • Override form trong admin

3. Cấu trúc bảng sản phẩm trong database

Một số bảng quan trọng:

Bảng Mô tả
dtb_product Bảng chính của sản phẩm
dtb_product_class Lưu biến thể (variant) như size, màu
dtb_category Lưu danh mục sản phẩm
dtb_product_category Liên kết nhiều danh mục cho 1 sản phẩm
dtb_product_image Lưu thông tin hình ảnh sản phẩm

Lưu ý: Mỗi sản phẩm có thể có nhiều biến thể (product class) – ví dụ: áo có size M/L/XL.

4. Truy vấn sản phẩm theo danh mục

Nếu bạn cần hiển thị sản phẩm theo danh mục ở frontend (hoặc trong plugin), có thể dùng Doctrine Repository như sau:

// Trong ProductRepository.php

public function findByCategory($categoryId)
{
    $qb = $this->createQueryBuilder('p')
        ->innerJoin('p.ProductCategories', 'pc')
        ->innerJoin('pc.Category', 'c')
        ->where('c.id = :categoryId')
        ->andWhere('p.Status = 1') // Chỉ lấy sản phẩm hiển thị
        ->setParameter('categoryId', $categoryId)
        ->getQuery();

    return $qb->getResult();
}

Bạn có thể hiển thị trên Twig với vòng lặp:

{% for product in products %}
  <h3>{{ product.name }}</h3>
  <p>{{ product.price02Min }} 円</p>
{% endfor %}

Kết luận

  • Danh mục & sản phẩm là phần quan trọng nhất trong quản trị nội dung của EC-CUBE.
  • Nắm rõ cách liên kết danh mục – sản phẩm giúp quản lý hiệu quả và hiển thị hợp lý.
  • Hiểu cấu trúc DB giúp bạn mở rộng hoặc tùy biến logic backend dễ dàng.
  • Kết hợp với truy vấn Doctrine, bạn có thể tạo các khối "Sản phẩm theo danh mục", "Sản phẩm nổi bật", v.v.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ