我需要添加自定义属性来过滤产品集合
我尝试了以下代码,但过滤器无效
$_productCollections=$this->getLoadedProductCollection();
$_productCollection = $_productCollections->addAttributeToFilter('weight', array('lt' => 100));
以下代码正在运作
$collection = Mage::getModel('catalog/product')->getCollection();
$_productCollection = $collection->addAttributeToFilter('weight', array('lt' => 100));
我需要正确的方法来为重量属性添加过滤器范围,例如
->addAttributeToFilter('weight', array('lt' => 100));
默认产品系列中的($this->getLoadedProductCollection();
)
答案 0 :(得分:3)
我有一个解决这个问题的方法
步骤1:
列表的重复块代码
\app\code\core\Mage\Catalog\Block\Product\List.php to
\app\code\local\Mage\Catalog\Block\Product\List.php
步骤2:
从
更改以下代码$this->_productCollection = $layer->getProductCollection();
到
$this->_productCollection = $layer->getProductCollection()->addAttributeToFilter('weight', array('lt' => 100));
这是一个简单的解决方案,可以正确解决您的问题。
答案 1 :(得分:2)
尝试使用以下方式明确选择属性:
$_productCollection->addAttributeToSelect('weight');
然后过滤:
$_productCollections->addAttributeToFilter('weight', array('lt' => 100));
另一种方法是默认选择产品集合中的属性,方法是将其放在模块的config.xml中:
<config>
<frontend>
<product>
<collection>
<attributes>
<weight />
</attributes>
</collection>
</product>
</frontend>
然后你应该像往常一样进行过滤:
$_productCollections->addAttributeToFilter('weight', array('lt' => 100));
答案 2 :(得分:1)
也许,已经加载了集合。在加载集合之前添加过滤器
($this->_getProductCollection()->load())