Mostrando os últimos produtos na página inicial do Magento

Hoje vou explicar como colocar uma listagem de produtos na página inicial da sua loja Magento.

O primeiro passo é configurar a página inicial para mostrar esse listagem, para isso siga os passos:

  • Entre na sua área administrativa
  • No menu entre em “CMS” e depois “Gerenciar Páginas”
  • Clique na página inicial da sua loja

Na aba “Informações Gerais”, no campo “Conteúdo” coloque o seguinte código:

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

Agora na aba “Design Personalizado” coloque o seguinte xml:

<reference name="content"> 
	<block after="cms_page" template="catalog/product/new.phtml" alias="product_new" name="home.catalog.product.new" type="catalog/product_new"></block> 
    <!-- 
    <block type="reports/product_viewed" name="home.reports.product.viewed" alias="product_viewed" template="reports/home_product_viewed.phtml" after="product_new"/>
    <block type="reports/product_compared" name="home.reports.product.compared" template="reports/home_product_compared.phtml" after="product_viewed" /> 
    --> 
</reference>
<reference name="right"> 
	<action method="unsetChild">					
    	<alias>right.reports.product.viewed</alias>
    </action>
	<action method="unsetChild">	
		<alias>right.reports.product.compared</alias>
	</action>
</reference>

right.reports.product.viewed
right.reports.product.compared

Dessa forma estamos falando para o Magento utilizar a página catalog/product/new.phtml na página inicial.

Apenas com isso já temos os produtos sendo mostrados na home, porém está mal formatado e com alguns problemas, o que precisamos fazer é editar o arquivo que está sendo mostrado.

Abra o arquivo /app/design/frontend/default/default/template/catalog/product/new.phtml, lá você consegue editar o layout da sua home.

Deixei meu arquivo da seguinte forma:

<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
    <div class="box base-mini">
        <div class="head">
            <h4>Produtos Novos</h4>
        </div>
        <div class="content">
            <?php $_collectionSize = $_products->getSize() ?>

            <?php $i = 0;
            foreach ($_products as $_product): ?>
                <?php if ($i++ % 2 == 0): ?>

                <?php endif ?>

                <?php if ($i % 2 == 0 && $i != $_collectionSize): ?>

                <?php endif ?>

            <?php endforeach ?>

            <?php for ($i; $i % 2 != 0; $i++): ?>

            <?php endfor ?>

            <?php if ($i % 2 == 0): ?>

            <?php endif ?>
            <table cellspacing="0" class="generic-product-grid" id="product-list-table">
                <tbody>
                <tr>
                    <td>
                        <h5><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape(
                                $_product->getName()
                            ) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></h5>

                        <p class="product-image">
                            <a href="<?php echo $_product->getProductUrl() ?>"
                               title="<?php echo $this->htmlEscape($_product->getName()) ?>">
                                <img src="<?php echo $this->helper('catalog/image')->init(
                                    $_product,
                                    'small_image'
                                )->resize(135, 135); ?>" width="135" height="135"
                                     alt="<?php echo $this->htmlEscape($_product->getName()) ?>">
                            </a>

                            <?php echo $this->getPriceHtml($_product, true) ?>

                            <?php if ($_product->isSaleable()): ?>
                                <button class="form-button"
                                        onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')">
                                    <span><?php echo $this->__('Add to Cart') ?></span></button>
                            <?php else: ?>
                        </p>
                        <div class="out-of-stock"><?php echo $this->__('Out of stock') ?></div>

                        <?php endif; ?>
                    </td>
                </tr>
                <tr>
                    <td class="empty-product"></td>
                </tr>
                </tbody>
            </table>

            <script type="text/javascript">decorateTable( 'product-list-table' )</script>
        </div>
    </div>

<?php endif; ?>

Dica: Para que os produtos sejam mostrados como últimos você precisa colocar a data de cadastro no campo “Set Product as New from Date” ou “Mostrar produto como novo a partir de”.

Espero ter ajudado!

Abraços!

comments powered by Disqus