Magento:来自相互多个类别的产品集合

时间:2016-03-30 16:46:03

标签: magento

假设我有一个可以在三个不同类别中找到的产品,例如。 ID 104,115和126。

现在我想获得一个由产品组成的产品系列,这些产品也应该在所有这三个类别中找到。 这意味着具有cat id 104和115的产品不应该在集合中,因为缺少126。

我该怎么做? : - )

回复Ape的回答:

试过你的方法。我的代码的第一部分如下:

        $_year = $_product->getBbYear();
        $_yearInterval = $this->getYearInterval();
        $_minYear = $_year - $_yearInterval;
        $_maxYear = $_year + $_yearInterval;

        $_minPopularityScore = $this->getMinPopularityScore();

        $categories = $_product->getCategoryIds();

        $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect( Mage::getSingleton('catalog/config')->getProductAttributes() );

        // EXCLUDE PRODUCT FROM COLLECTION
        $collection->addAttributeToFilter( 'entity_id', array( 'nin' => $_product->getId() ) );

        // BUILD PRIMARY COLLECTION
        if ( !$_fallback ) {
            foreach ($categories as $catid) {
                $collection->addAttributeToFilter('category_id', array('finset' => $catid));
            }

            // FILTER COLLECTION BASED ON RELEASE YEAR
            $collection->addAttributeToFilter('bb_year', array( 'gt' => $_minYear ));
            $collection->addAttributeToFilter('bb_year', array( 'lt' => $_maxYear ));

            // FILTER COLLECTION BASED ON POPULARITY SCORE
            $collection->addAttributeToFilter('bb_popularity_score', array('gt' => $_minPopularityScore) );

        // BUILD SECONDARY COLLECTION ON FALLBACK
        }

但是,一旦我添加循环并在category_id上添加了多个过滤器,页面就不会呈现。但是,我没有任何例外情况,系统日志也没有帮助...

1 个答案:

答案 0 :(得分:0)

您可以迭代产品的类别ID并为每个类别添加过滤器:

foreach ($product->getCategoryIds() as $id) {
    $collection->addAttributeToFilter('category_id', array('finset' => $id));
}

多次致电addAttributeToFilter(),即可创建AND条件