2012-02-15 79 views
1

如何列出具有特定屬性的產品?例如,如果Size是我的默認屬性集中的一個屬性。那麼我如何列出所有Size = 22的產品呢?通過magento中的屬性過濾產品

我在尋找答案的谷歌,將發佈爲答案,如果我找到任何。

感謝,

巴蘭

回答

0

例如:

$storeId = Mage::app()->getStore()->getId(); 
    $products = Mage::getResourceModel('catalog/product_collection');  

    $products->addAttributeToFilter(array(
        array('attribute' => 'attribute_code', 'eq' => 22))) 
        ->addAttributeToSelect('*') 
           ->setStoreId($storeId) 
           ->addStoreFilter($storeId) 
        ->setOrder('name', 'desc'); 

     Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); 
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); 
$this->setProductCollection($products); 

這對我來說工作正常。

+0

當我使用此代碼時,我得到錯誤:「致命錯誤:調用成員函數getBackend()在/app/code/core/Mage/Eav/Model/Entity/Abstract.php中的非對象上816行「 – balanv 2012-02-15 11:20:48

0

我不認爲目錄產品是爲此製作的。最好的辦法是在靜態表中移動屬性Size(catalog_product_entity)。然後,您將能夠按大小進行搜索,並保持目錄的快速。如果你想在不同的屬性上做這件事,我想你可以把它作爲集合中的參數。但我不確定。

1

我只是做這個不是很久以前

拿到店裏ID:在

$storeId = Mage::app()->getStore()->getId(); 

爲了讓所有的產品過濾掉一切,但尺寸

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter("Size", "1"); 

然後簡單foreach循環添加以下內容(這將循環遍歷數組$ _productCollection)

foreach($_productCollection as $_product) 
{ 
    $attr = Mage::getResourceModel('catalog/product')->getAttributeRawValue($_product->getId(), 'Size', $storeId); 
    if($attr == '22') 
    { 
     //Echo names of the products 
     echo $_product->getName(); 
    } 
} 

通過這種方式,您仍然可以在產品清單上做很多工作,而無需嚴格列出產品。因此,如果您願意,您仍然可以添加名稱,價格和更多屬性。希望這有助於!