Magento Forum

   
Page 3 of 3
Colocar produtos na frente. 
 
RIGELCASTRO
Jr. Member
 
Total Posts:  4
Joined:  2012-08-03
 

Alguns meses atrás eu sugeri para a galera uma alteração num arquivo do CORE para quem gostaria de limitar o número de produtos aleatório listados na home.
Agora vou postar uma outra solução que encontrei na net (pesquisando muuuuuuuuitoo) para não alterar o arquivo do CORE.

Quem dera quando (instalamos o Magento e) vamos mostrar os produtos de nossa loja na home fosse do jeito que queiramos. Por exemplo, seria tão simples se ao colocar na página home no CMS os códigos seguintes e funcionassem redondinho somente com os arquivos base que acompanham o Magento na instalação inicial (list.phtml)

Vamos fazer de conta que queiramos colocar em nossa vitrine os produtos aleatórios, mas separados por categorias. Quero mais ainda, separados por categorias e listar 6 produtos da categoria 1, depois 3 da categoria 2 e depois listar também 3 produtos da categoria 3.  Se você buscar na net códigos para o seu desejo, vai encontrar o seguinte (ou variações):

{{block type="catalog/product_list_random" category_id="ID-DA-CATEGORIA1" template="catalog/product/list_cat1.phtml"}}
{{block type="catalog/product_list_random" category_id="ID-DA-CATEGORIA2" template="catalog/product/list_cat2.phtml"}}
{{block type="catalog/product_list_random" category_id="ID-DA-CATEGORIA3" template="catalog/product/list_cat3.phtml"}}
Se você é iniciante (como eu) e está com os arquivos do Magento básico (list.phtml) sem customização. Pega o arquivo list.phtml e faz 3 cópias renomeando-os list_cat1.phtml , list_cat2.phtml e list_cat2.phtml.  Daí pega os 3 códigos dados anteriormente cola na home (CMS), salva ... depois apaga a cache e dá um F5 para vê o que aconteceu. O que você verá é TODOS os produtos da sua loja listados repetidos 3 vezes na vitrine e tudo misturado (não estarão separados por categoria), a minha versão do Magento 1.7.0.2.

Procurando na net, encontrei um list.phtml que combinado com o código seguinte executa EXATAMENTE o que queremos.

{{block type="catalog/product_list" category_id="ID_CATEGORIA" template="catalog/product/list_aleatorio.phtml"}}

Segue o código do list_aleatorio.phtml

<?php
$_productCollection
=$this->getLoadedProductCollection();
$categoryID $this->category_id;
//$categoryID = $this->getCategoryId();
if($categoryID){
  $category 
= new Mage_Catalog_Model_Category();
  
$category->load($categoryID); // this is category id
  
$collection $category->getProductCollection();
} else{
  $collection 
Mage::getResourceModel('catalog/product_collection');
}
Mage
::getModel('catalog/layer')->prepareProductCollection($collection);
$collection->getSelect()->order('rand()');
$collection->addStoreFilter();
$quant_produtos 6;                                                                //QUANTIDADE DE PRODUTOS LISTADOS
$numProducts $this->getNumProducts() ? $this->getNumProducts() : $quant_produtos;
$collection->setPage(1$numProducts)->load();
$_productCollection $this->_productCollection $collection;
?>

<?php
    $_productCollection
=$this->getLoadedProductCollection();
    
$_helper $this->helper('catalog/output');
?>
<?php 
if(!$_productCollection->count()): ?>
<class="note-msg"><?php echo $this->__('There are no products matching the selection.'?></p>
<?php else: ?>
<div class="category-products">
    <!--
<?php echo $this->getToolbarHtml() ?>-->
    
<?php // List mode ?>
    
<?php if($this->getMode()!='grid'): ?>
    <?php $_iterator 
0?>
    
<ol class="products-list" id="products-list">
    
<?php foreach ($_productCollection as $_product): ?>
        
<li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
            
<?php // Product Image ?>
            
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
            
<?php // Product description ?>
            
<div class="product-shop">
                <
div class="f-fix">
                    
<?php $_productNameStripped $this->stripTags($_product->getName(), nulltrue); ?>
                    
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product$_product->getName() , 'name'); ?></a></h2>
                    
<?php if($_product->getRatingSummary()): ?>
                    <?php 
echo $this->getReviewsSummaryHtml($_product?>
                    <?php 
endif; ?>
                    <?php 
echo $this->getPriceHtml($_producttrue?>
                    <?php 
if($_product->isSaleable()): ?>
                        
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart'?></span></span></button></p>
                    
<?php else: ?>
                        
<class="availability out-of-stock"><span><?php echo $this->__('Out of stock'?></span></p>
                    
<?php endif; ?>
                    
<div class="desc std">
                        
<?php echo $_helper->productAttribute($_product$_product->getShortDescription(), 'short_description'?>
                        
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More'?></a>
                    </
div>
                    <
ul class="add-to-links">
                        
<?php if ($this->helper('wishlist')->isAllow()) : ?>
                            
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist'?></a></li>
                        
<?php endif; ?>
                        <?php 
if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                            
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare'?></a></li>
                        
<?php endif; ?>
                    
</ul>
                </
div>
            </
div>
        </
li>
    
<?php endforeach; ?>
    
</ol>
    <
script type="text/javascript">decorateList('products-list''none-recursive')</script>

    <?php 
else: ?>

    <?php 
// Grid Mode ?>

    
<?php $_collectionSize $_productCollection->count() ?>
    <?php $_columnCount 
$this->getColumnCount(); ?>
    <?php $i
=0; foreach ($_productCollection as $_product): ?>
        <?php 
if ($i++%$_columnCount==0): ?>
        
<ul class="products-grid">
        
<?php endif ?>
            
<li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                <
a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" 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 if($_product->getRatingSummary()): ?>
                <?php 
echo $this->getReviewsSummaryHtml($_product'short'?>
                <?php 
endif; ?>
                <?php 
echo $this->getPriceHtml($_producttrue?>
                
<div class="actions">
                    
<?php if($_product->isSaleable()): ?>
                        
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart'?></span></span></button>
                    
<?php else: ?>
                        
<class="availability out-of-stock"><span><?php echo $this->__('Out of stock'?></span></p>
                    
<?php endif; ?>
                    
<ul class="add-to-links">
                        
<?php if ($this->helper('wishlist')->isAllow()) : ?>
                            
<li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist'?></a></li>
                        
<?php endif; ?>
                        <?php 
if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
                            
<li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare'?></a></li>
                        
<?php endif; ?>
                    
</ul>
                </
div>
            </
li>
        
<?php if ($i%$_columnCount==|| $i==$_collectionSize): ?>
        
</ul>
        
<?php endif ?>
        <?php 
endforeach ?>
        
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
    <?php 
endif; ?>

    
<div class="toolbar-bottom">
        <!--
<?php echo $this->getToolbarHtml() ?>-->
    </
div>
</
div>
<?php endif; ?>

Este list_aleatorio.phtml está customizado do theme da base/default, mas você pode alterá-lo para apresentar de acordo com o template da sua loja (botão COMPRAR, Adicionar Lista de Desejos e Comparar).

Espero ajudar algum iniciante do Magento.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top
Page 3 of 3