Magento按类别显示产品

时间:2016-07-22 09:43:51

标签: magento magento-1.9

我的产品页面上的list_single.phtml上有这个代码。该代码显示了类别ID为100的15种产品。但我想展示产品类别中的产品。 当我将 - > addCategoryFilter($ _ category)更改为 - > addCategoryFilter(4)时,它不起作用。有什么问题?

<div class="products_single newProductsContainer container">
    <?php           

 $_helper = $this->helper('catalog/output');
 $_category = Mage::getModel('catalog/category')->load(100);
 $_productCollection = Mage::getResourceModel('reports/product_collection')
                       ->addAttributeToSelect('*')
                       ->addCategoryFilter($_category)
                       ->setVisibility(array(2,3,4));
 $_productCollection->getSelect()->order(new Zend_Db_Expr('RAND()'));                  
 $_productCollection->setPage(1, 15);

        $i=0; $u=0; 
        foreach ($_productCollection as $_product): 
            $u++; 
            if ($u % 15 == 1) {echo '<div class="row productsrow">';}
    ?>
            <div class="item col-md-3 col-xs-12 col-sm-6">
                <?php $dynamicproductload = " "; ?>
                <a class="product-image visible-xs visible-sm" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>">
                    <img id="product-collection-image-<?php echo $_product->getId(); ?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(210,150); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                </a>
                <a class="product-image visible-md visible-lg" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>">
                    <img id="product-collection-image-<?php echo $_product->getId(); ?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(210,150); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                </a>
                <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
                <?php echo $this->getPriceHtml($_product, true) ?>

                   <?php
                        if ($this->getChild('name.after')) {
                            $_nameAfterChildren = $this->getChild('name.after')->getSortedChildren();
                            foreach ($_nameAfterChildren as $_nameAfterChildName) {
                                $_nameAfterChild = $this->getChild('name.after')->getChild($_nameAfterChildName);
                                $_nameAfterChild->setProduct($_product);
                                echo $_nameAfterChild->toHtml();
                            }
                        }
                    ?>
        </div>
        
        <?php 
            $i++; 
            if ($i % 15 == 0) { echo "</div>";  } 
        ?>
                
        <?php endforeach; ?>
        </div>
        </div>
        <?php else: ?>
<?php endif; ?>
</div>
</div>

2 个答案:

答案 0 :(得分:0)

我是否清楚您是否想要加载产品类别,然后展示与该类别相关的产品?

请记住,产品可以是关系中许多类别的一部分,因此这将返回一个数组。当您传递产品加载的类别时,您从var_dump()获得了什么?

$categories = $product->getCategoryIds();
foreach ($categories as $category_id) {
    $_category = Mage::getModel('catalog/category')->load(category_id);
    $_productCollection = Mage::getResourceModel('reports/product_collection')
                   ->addAttributeToSelect('*')
                   ->addCategoryFilter($_category)
                   ->setVisibility(array(2,3,4));

      // Now do enter code here what you need to do with this object
      foreach ($_productCollection as $_product){
        // Do your logic here
      }
} 

答案 1 :(得分:0)

尝试使用目录/产品型号

%d