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!