2016-07-22 114 views
0

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

<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>

+0

$ _category是资源和第二个条件,你只有经过整数值。首先加载类别的数据,然后传递类别对象 – mjdevloper

回答

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 
     } 
} 
0

尝试使用目录/产品型号

$_productCollection = Mage::getModel('catalog/product') 
->getCollection()->addAttributeToSelect('*') 
->addCategoryFilter($_category)->setVisibility(array(2,3,4)); 
相关问题