添加自定义属性以在magento中过滤产品集合

时间:2015-01-21 12:52:33

标签: php magento

我需要添加自定义属性来过滤产品集合

我尝试了以下代码,但过滤器无效

$_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();

3 个答案:

答案 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())