2016-07-22 3 views
0

У меня этот код на list_single.phtml, на моей странице продукта. Код показывает 15 продуктов из категории id 100. Но я хочу показать продукты из категории продукта. Когда я меняю -> 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)); 
Смежные вопросы