2013-02-17 3 views
0

Bon, je cours Magento 1.7 et mon patron m'a demandé d'avoir une barre en haut de notre site montrant le nombre total d'articles en stock et la valeur totale de ladite Stock.Magento - Affichage du prix total de tous les produits

Jusqu'ici, j'ai compris le nombre total d'éléments. Je ne suis pas très bon avec PHP, donc ça a été un tas d'essais et d'erreurs.

Voici ce que mon code ressemble à ce jour [MISE À JOUR: a un filtre pour exclure de produits hors stock]:

<?php 
    $collection = Mage::getModel('catalog/product')->getCollection() 
->joinField(
    'qty', 
    'cataloginventory/stock_item', 
    'qty', 
    'product_id=entity_id', 
    '{{table}}.stock_id=1', 
    'left' 
) 
->addAttributeToFilter('qty', array('eq' <= 0)); 
    $_coreHelper = $this->helper('core'); 


    $sum = 0; 

     foreach ($collection as $product){ 
    $sum += $product->getPrice(); 
    } 
?> 

As of today our inventory consists of <span style="color: black; font-size:16px; font-family: Helvetica, sans-serif; font-weight: 400; border: 1px solid black; padding: 0px 2px 0px 2px;"><?php echo $collection->count(); ?></span> items with a total value of <span style="color: black; font-size:16px; font-family: Helvetica, sans-serif; font-weight: 400; border: 1px solid black; padding: 0px 2px 0px 2px;"><?php echo $_coreHelper->currency($sum); ?></span> 

La section somme ne fonctionne évidemment pas.

Quelqu'un peut-il me donner quelques conseils sur la façon d'accomplir cela. Je suppose que vous utiliseriez une boucle pour charger tous les prix des produits et ensuite une somme pour les ajouter tous ensemble et afficher le total, mais y arriver correctement pose un problème pour moi.

Toute aide serait appréciée.

+0

try $ collection = Mage :: getModel ('catalogue/produit') -> getCollection(); mais vous aurez tous les articles, en stock ou non, activer ou non ... – dagfr

+0

Puis-je ajouter un filtre en dessous de cela pour se débarrasser des articles en rupture de stock? J'ai déjà vu d'autres personnes similaires. – nesagwa

Répondre

0

Oui, vous pouvez, comme ceci:

<?php $collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('status','1'); 
$sum = 0; 
$count = 0; 
foreach ($collection as $_product) { 
    $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); 
    if ($stock>=1) { 
     $sum+=$_product->getPrice()*$stock; 
     $count+=$stock; 
    } 
} 
echo "You have $count items for a total value of ".Mage::helper('core')->currency($sum); 
+0

Malheureusement, ma page principale n'affiche rien. Je reçois "[18-Feb-2013 15:09:10] Erreur PHP Parse: erreur de syntaxe, T_IF inattendu dans/home1/melvynan/public_html/app/design/frontend/default/vol/template/catalog/category/stocktotal.phtml sur la ligne 6 "dans mon journal des erreurs. – nesagwa

+0

Maintenant, je reçois [18-Feb-2013 16:02:24] Erreur PHP Parse: erreur de syntaxe, inattendu T_VARIABLE dans/home1/melvynan/public_html/app/design/frontend/default/vol/template/catalog/category /cat_images.phtml sur la ligne 8 – nesagwa

0

J'ai eu quelques problèmes avec la réponse de dagfr ci-dessus, la getPrice() n'a pas retourné les valeurs lors de l'exécution sur le tableau de bord d'administration,

Ajout:

$collection->addAttributeToSelect('price'); 

m'a permis d'accéder alors le prix par

$_product['price'] 
Questions connexes