我需要添加自定义属性来过滤产品集合
我尝试了下面的代码,但过滤器不起作用
$_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();
)
我有一个解决方案来解决这个问题
步骤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));
这是正确解决问题的简单解决方案。
尝试使用以下命令显式选择属性:
$_productCollection->addAttributeToSelect('weight');
然后过滤:
$_productCollections->addAttributeToFilter('weight', array('lt' => 100));
另一种方法是默认选择产品集合中的属性,方法是将其放在模块的配置.xml中:
<config>
<frontend>
<product>
<collection>
<attributes>
<weight />
</attributes>
</collection>
</product>
</frontend>
然后你应该能够像往常一样做过滤器:
$_productCollections->addAttributeToFilter('weight', array('lt' => 100));
也许,集合已经加载。在加载集合之前添加筛选器
($this->_getProductCollection()->load())