2016-07-22 9 views
0

Ich habe diesen Code auf list_single.phtml, auf meiner Produktseite. Der Code zeigt 15 Produkte aus der Kategorie ID 100. Aber ich möchte die Produkte aus der Kategorie des Produkts zeigen. Wenn ich ändern -> addCategoryFilter ($ _ Kategorie) zu -> addCategoryFilter (4), es funktioniert nicht. Was ist das Problem?Magento Zeige Produkte nach Kategorie

<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 ist Ressource und in der zweiten Bedingung nur Wert integer geben Sie verwenden. Laden Sie zuerst die Daten der Kategorie und dann das Kategorieobjekt – mjdevloper

Antwort

0

Genau so bin ich klar Ihre versuchen, die Kategorie eines Produkts zu laden und dann Produkte zu dieser Kategorie gehören zeigen?

Denken Sie daran, dass ein Produkt Teil vieler Kategorien in der Beziehung sein kann, so dass dies ein Array zurückgibt. Was bekommen Sie von var_dump(), wenn Sie die Kategorien nach Produkt übergeben?

$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

Versuchen Katalog/Produktmodell

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