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

Add custom attribute to filter in product collection in 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();)

尝试明确选择属性:

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

也许,集合已经加载。在加载集合之前添加过滤器

($this->_getProductCollection()->load())

这个问题我有一个答案

第一步:

列表的重复块代码

\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));

这是正确解决您的问题的一种简单方法。