2010-08-06 8 views
2

Je montre actuellement une collection des produits les plus consultés sous forme de liste dans mon pied de page. Je reçois la collection en utilisant le code suivant:Table de produits plats Magento - Récupérer les noms de produits «Plus consultés»

$_viewed_productCollection = Mage::getResourceModel('reports/product_collection') 
->addAttributeToSelect('*') 
->addViewsCount() 
->setOrder('views_count', 'desc') 
$_viewed_productCollection->load(); 

Cela fonctionne bien jusqu'à ce que les produits plats activer, et il ne peut plus récupérer les noms de produits ou les prix. Il peut cependant toujours avoir l'url, le sku etc, ce qui me déroute vraiment. J'ai imprimé le tableau de ce qui peut être retourné, et il semble qu'il n'y a pas de données de nom il y a du tout, seuls les éléments suivants:

Array (  
[views] => 29  
[entity_id] => 18  
[entity_type_id] => 10  
[attribute_set_id] => 38  
[type_id] => simple  
[sku] => sw810i  
[created_at] => 2007-08-23 15:47:44  
[updated_at] => 2008-08-08 14:50:56  
[has_options] => 0  
[required_options] => 0  
[is_salable] => 1  
[stock_item] => Varien_Object Object   
([_data:protected] => Array     
([is_in_stock] => 1)    
[_origData:protected] =>    
[_idFieldName:protected] =>    
[_isDeleted:protected] =>)  
[gift_message_available] => 2 
) 

est-il de toute façon d'obtenir un nom de produit en utilisant son SKU? Quelque chose comme ça peut-être:

<?php $sku = $_product->getData('sku'); echo $this->htmlEscape($_product->getName($sku)) ?> 

Répondre

2

Je pense que cela est en fait un bug, comme pourquoi ne pas être en mesure d'obtenir un nom de produits? Alors, je l'ai présenté comme tel:

http://www.magentocommerce.com/bug-tracking/issue?issue=9812

Je suis venu avec une solution de contournement pour cela, si quelqu'un en a besoin:

<?php foreach ($_productCollection as $_product): ?> 
     <?php $sku = $_product->getData('sku'); $_currentproduct = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku); ?> 
     <li><a href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_currentproduct->getName()) ?></a></li> 
<?php endforeach; ?> 

Fondamentalement, vous utilisez juste le sku, que vous pouvez obtenir directement à partir de la collection de produits, pour charger le nom séparément.

Questions connexes