通过magento中的属性过滤产品
问题描述:
如何列出具有特定属性的产品?例如,如果Size是我的默认属性集中的一个属性。那么我如何列出所有Size = 22的产品呢?通过magento中的属性过滤产品
我在寻找答案的谷歌,将发布为答案,如果我找到任何。
感谢,
巴兰
答
例如:
$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);
这对我来说工作正常。
答
我不认为目录产品是为此制作的。最好的办法是在静态表中移动属性Size(catalog_product_entity)。然后,您将能够按大小进行搜索,并保持目录的快速。如果你想在不同的属性上做这件事,我想你可以把它作为集合中的参数。但我不确定。
答
我只是做这个不是很久以前
拿到店里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();
}
}
通过这种方式,您仍然可以在产品清单上做很多工作,而无需严格列出产品。因此,如果您愿意,您仍然可以添加名称,价格和更多属性。希望这有助于!
当我使用此代码时,我得到错误:“致命错误:调用成员函数getBackend()在/app/code/core/Mage/Eav/Model/Entity/Abstract.php中的非对象上816行“ – balanv 2012-02-15 11:20:48