2011-02-08 60 views
5

Tôi đang cố gắng lấy danh sách các sản phẩm có giá bán chỉ trong một số danh mục nhất định. Ngay bây giờ tôi đang cố gắng sử dụng một bộ sưu tập sản phẩm để có được dữ liệu này. Tôi không chắc chắn làm thế nào tôi sẽ đi về hạn chế bộ sưu tập cho các loại cụ thể mà thôi. Dưới đây là những gì tôi có cho đến nay:Bộ sưu tập sản phẩm Magento Chỉ nhận sản phẩm từ các danh mục nhất định

$products = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('status', 1) 
    ->addAttributeToFilter('visibility', 4) 
    ->addAttributeToFilter('special_price', array('neq' => "")) 
    ->addAttributeToFilter('discontinued', array('neq' => 1)) 
    ->setPageSize(10) 
    ->setOrder('price', 'ASC') 
    ; 

Thuộc tính ngưng là một thuộc tính tùy chỉnh mà chúng tôi sử dụng để sản phẩm này không hiển thị nhưng cũng không 404.

Có cách nào để sử dụng mô hình sản phẩm và hạn chế đối với một số danh mục nhất định?

+0

Lưu ý, 'special_price' có thể không có sẵn với truy vấn của bạn. Câu hỏi và câu trả lời này giải thích một chút: http://stackoverflow.com/questions/12054165/ –

Trả lời

5

Đã tìm ra. Bạn bắt đầu với danh mục và lấy bộ sưu tập sản phẩm từ danh mục và sau đó tinh chỉnh nó từ đó. Trong mã có dạng như sau:

$products = Mage::getModel('catalog/category')->load(410) 
    ->getProductCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('status', 1) 
    ->addAttributeToFilter('visibility', 4) 
    ->addAttributeToFilter('special_price', array('neq' => "")) 
    ->addAttributeToFilter('discontinued', array('neq' => 1)) 
    ->setOrder('price', 'ASC') 
    ; 
Các vấn đề liên quan