2012-08-12 44 views
1

我使用此代碼獲得一個類別中的所有ID。Magento,獲得所有產品,不僅是活躍的

Mage::getResourceModel('catalog/product_collection')->setStoreId($storeid)->addCategoryFilter(Mage::getModel('catalog/category')->load($subcatid))->getAllIds(); 

但是,這隻會選擇在該類別中處於活動狀態的產品,而且我需要包括非活動產品在內的所有產品。

如何修改此代碼以獲取所有產品?

+1

我不知道磁電機,但它看起來像您要麼修改您要調用的磁對象,要麼找到返回活動類別之外的產品的其他對象。 – Fluffeh 2012-08-12 13:28:34

+1

感謝Fluffeh在那扇敞開的大門裏踢球。如果我想知道要調用什麼對象,我不會在這裏提出問題。在Google或Magento文檔中找不到正確答案。 – Redox 2012-08-12 15:46:18

回答

5

將所有產品附加到特定類別(無論產品可見度或狀態限制如何)的一種方法是「

$categoryId = 11; //Replace with correct category id 
$collection = Mage::getModel('catalog/product')->getCollection() 
    ->addAttributeToSelect('*') //Replace to select only the attributes required 
    ->joinTable(
     'catalog/category_product', 
     'product_id=entity_id', 
     array(''), 
     'category_id='.$categoryId , 
     'left'); 
+0

這似乎是Magento中那些沒有記錄的細節之一。使用addCategoryFilter方法會導致查詢使用catalog_category_product_index表,該表正如您所提到的那樣通過狀態和可見性進行過濾。這種行爲在前端產品列表頁面上有意義,有點意外,因爲沒有必要通知您這種「額外功能」。 – beeplogic 2012-08-13 02:36:38

+1

這通常與Magento :) – 2012-08-13 07:05:41

+0

神奇,謝謝德魯。這是我可以合作的東西! – Redox 2012-08-15 18:53:41