Question

Je cherche à avoir un tableau de prix (en première page) pour un produit spécifique, mais 3 quantités différentes (prédéfinies).

Afficher le produit et avoir les bons liens d'ajout au panier sur la page était relativement simple :

$_productId = '498';
$_product   = Mage::getModel('catalog/product')->load($_productId);
$_url       = Mage::helper('checkout/cart')->getAddUrl($_product);

Obtenir le prix de la quantité 1, taxes, devises et certains formats compris, était également simple :

$_price = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice()));

Cela se traduit par <span class="price">€15,00</span>

Cependant, mon objectif est d'avoir un tableau de prix comme :

┌───────────┬───────────┬───────────┐
│  Single   │ ValuePack │ FamilyPack│
├───────────┼───────────┼───────────┤
│   €15     │    €10    │    €7.50  │
├───────────┼───────────┼───────────┤
│  Qty 1    │   Qty 5   │   Qty 10  │ 
└───────────┴───────────┴───────────┘ 

Obtenir le prix Qté * X n’a pas été difficile non plus :

$_qty = 5; 
$_price = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice($_qty)));

Comme prévu, cela se traduit par <span class="price">€10,00</span>

Cependant, même si je change $_qty, le résultat des 2 autres prix est toujours le même que le premier.

Illustration:

$_price_1 = Mage::helper('core .... $_product->getFinalPrice(1))); résulte en €15
$_price_2 = Mage::helper('core .... $_product->getFinalPrice(5))); résulte en €15 aussi
$_price_3 = Mage::helper('core .... $_product->getFinalPrice(10)); résulte en €15 aussi

Je suppose que cela a quelque chose à voir avec le fait que Magento met en cache le prix du produit après la première recherche.

Quelqu'un a-t-il une idée sur la façon de créer correctement ce tableau ?

Était-ce utile?

La solution

Il s'avère qu'obtenir le niveau de tarification n'a pas été si difficile non plus, car il est disponible dans un tableau. $_product->getFormatedTierPrice() (attention à l'orthographe incorrecte !).

Ce tableau ressemble à ceci :

Array
(
    [32000-2] => Array
        (
            [price_id] => 50
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 21.95
            [price_qty] => 2.0000
            [website_price] => 24.95
            [formated_price] => € 18,95
        )

    [32000-4] => Array
        (
            [price_id] => 52
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 23.95
            [price_qty] => 4.0000
            [website_price] => 23.95
            [formated_price] => € 17,95
        )

    [32000-10] => Array
        (
            [price_id] => 56
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 3200024.95
            [price] => 22.95
            [price_qty] => 10.0000
            [website_price] => 22.95
            [formated_price] => € 16,95
        )

    [32000-25] => Array
        (
            [price_id] => 57
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 19.95
            [price_qty] => 25.0000
            [website_price] => 21.95
            [formated_price] => € 15,95
        )

    [32000-50] => Array
        (
            [price_id] => 58
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 19.95
            [price_qty] => 50.0000
            [website_price] => 19.95
            [formated_price] => € 14,95
        )

)

Je n'ai besoin que de 2 éléments de ce tableau multidimensionnel :[price_qty] et [formated_price].

Je me retrouve donc avec le code suivant :

$_productId = '498';
$_product   = Mage::getModel('catalog/product')->load($_productId);
$_single = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice())); // Just the single product price
$_prices = array_column($_product->getFormatedTierPrice(), 'formated_price', 'price_qty'); // Extract price_qty and formated_price from Array of formatted tier prices

Et dans mon tableau de prix j'ai maintenant :

<li class="price">
  <?php 
    $_qty = '10.0000'; 
    if (array_key_exists($_qty, $_prices)) { 
      echo $_prices[$_qty]; 
    } else { 
    echo $_single; 
    } 
  ?>
</li>

Avec else { echo $_single;} Je m'assure que si quelqu'un change la quantité de niveau dans le backend (les quantités de niveau sont actuellement codées en dur dans mon phtml), j'afficherai au moins le prix du produit unique au lieu de aucun prix du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top