Magento - Producten tonen


Wil je bijvoorbeeld specifieke producten op de homepage of een andere pagina gaan uitlichten tonen van Magento dan kan de onderstaande code hiervoor worden gebruikt. In de code is het ID van een categorie geplaatst zodat alleen de producten die in deze categorie zijn geplaatst worden getoond. Dit staat achter setCategoryId, wijzig dit naar de correcte categorie. Verder wordt voor het tonen van de producten het bestand catalog/product/list.phtml aangeroepen. Stel hiervoor eventueel een aparte template in indien dit is gewenst. Dit kan door bijvoorbeeld list.phtml te kopieren en aan te passen.

Template

Wil je alle producten tonen laat dan het gedeelte met het ID van de categorie weg, zorg dan wel dat alle aanwezige producten aan de Rootcategorie in Magento zijn gekoppeld.

<?php
        echo $this->getLayout()->createBlock('catalog/product_list')->setCategoryId(11)->setTemplate('catalog/product/list.phtml')->toHtml();
?>


Pagina / Statisch blok

Om producten toe te voegen aan een nieuwe of bestaande pagina die in Magento is geplaatst onder CMS kan de onderstaande code gebruikt worden. Wijzig ook hier het ID naar de correcte categorie en wijzig eventueel de ingestelde template. Wil je alle producten tonen laat dan het gedeelte met het ID van de categorie weg, zorg dan wel dat alle aanwezige producten aan de Rootcategorie in Magento zijn gekoppeld. De code kan indien gewenst ook geplaatst worden in een statisch blok om bepaalde producten uit te lichten.

{{block type="catalog/product_list" category_id="11" name="product_list" template="catalog/product/list.phtml"}}


XML

Wil je alle producten tonen laat dan het gedeelte met het ID van de categorie weg, zorg dan wel dat alle aanwezige producten aan de Rootcategorie in Magento zijn gekoppeld.

<block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
        <action method="setCategoryId"><category_id>11</category_id></action>
</block>

Nieuwe producten

Met de onderstaande code toon je nieuwe producten. Het gaat dan om de producten waarvoor is aangegeven dat ze nieuw zijn. Dit kan ingesteld worden door een product te openen en datums bij 'Set Product as New from Date' en 'Set Product as New to Date' in te vullen. Hiermee stel je de periode in dat een product als Nieuw gemarkeerd moet worden.

Template

<?php
        echo $this->getLayout()->createBlock('catalog/product_new')->setTemplate('catalog/product/new.phtml')->toHtml();
?>


Pagina / Statisch blok

{{block type="catalog/product_new" name="product.new" template="catalog/product/new.phtml"}}


XML

<block type="catalog/product_new" name="product.new" template="catalog/product/new.phtml" />

Laatste producten

Met de onderstaande code toon je de laatste producten die zijn toegevoegd aan Magento.

<?php
        $_productCollection = Mage::getResourceModel('reports/product_collection')
        ->addAttributeToSelect('*')
        ->setVisibility(array(2,3,4))
        ->setOrder('created_at', 'desc')
        ->setPage(1, 5);
        echo '<h2>Laatste producten</h2>';
        echo '<ul>';
                foreach($_productCollection as $_product):
                        echo '<li><a href="' . $_product->getProductUrl() . '">' . $_product->getName() . '</a></li>';
                endforeach;
        echo '</ul>';
?>

Producten op detailpagina

De onderstaande code kan geplaatst worden in het bestand view.phtml in catalog/product/ om producten te tonen afkomstig uit een specifieke categorie.

<?php
        $_categoryId = '11';
        $_productCollection = Mage::getModel('catalog/category')->load($_categoryId)
        ->getProductCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('status', 1)
        ->addAttributeToFilter('visibility', 4)
        ->setOrder('price', 'ASC')
        ->setPage(1, 5);
foreach ($_productCollection as $_product): ?>
        <div>
                <img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
                <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>
                <?php echo $this->getPriceHtml($_product, true) ?>
        </div>
<?php endforeach; ?>