Quản lý danh mục sản phẩm và sản phẩm
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.

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.
Xem thêm

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