2011-02-08 14 views
5

Próbuję uzyskać listę produktów, które mają cenę sprzedaży, które są tylko w niektórych kategoriach. Teraz próbuję użyć kolekcji produktów, aby uzyskać te dane. Nie jestem pewien, w jaki sposób ograniczyłbym kolekcję tylko dla określonych kategorii. Oto co mam do tej pory:Kolekcja produktów Magento Dostać tylko produkty z niektórych kategorii

$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') 
    ; 

Atrybut zaniechana to atrybut niestandardowy że używamy tak, że produkty nie są wyświetlane, ale też nie 404.

Czy istnieje sposób, aby użyć model produktu i ograniczyć do niektórych kategorii?

+0

Uwaga: "special_price" może nie być dostępne w zapytaniu. To pytanie i odpowiedź wyjaśniają nieco: http://stackoverflow.com/questions/12054165/ –

Odpowiedz

5

Wyliczyłem to. Zaczynasz od kategorii i otrzymujesz kolekcję produktów z kategorii, a następnie udoskonalasz ją. W kodzie wygląda to następująco:

$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') 
    ; 
Powiązane problemy