Frage

Ich suche eine Preistabelle (auf der Startseite) für ein bestimmtes Produkt, aber 3 verschiedene (vordefinierte) Mengen.

Es war relativ einfach, das Produkt anzuzeigen und die richtigen Links zum Hinzufügen zum Warenkorb auf der Seite zu haben:

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

Es war auch einfach, den Preis für Menge 1 einschließlich Steuern, Währung und einiger Formatierungen zu erhalten:

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

Dies führt zu <span class="price">€15,00</span>

Mein Ziel ist es jedoch, eine Preistabelle wie zu haben:

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

Den Qty * X-Preis zu bekommen war auch nicht schwer:

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

Dies führt erwartungsgemäß zu <span class="price">€10,00</span>

Obwohl ich $ _qty ändere, ist die Ausgabe der anderen 2 Preise immer dieselbe wie die erste.

Illustration:

$_price_1 = Mage::helper('core .... $_product->getFinalPrice(1))); ergebnisse in €15
$_price_2 = Mage::helper('core .... $_product->getFinalPrice(5))); ergebnisse in €15 sowie
$_price_3 = Mage::helper('core .... $_product->getFinalPrice(10)); ergebnisse in €15 sowie

Ich gehe davon aus, dass dies etwas damit zu tun hat, dass Magento den Produktpreis nach der ersten Suche zwischenspeichert.

Hat jemand eine Ahnung, wie man diese Tabelle richtig erstellt?

War es hilfreich?

Lösung

Es stellte sich heraus, dass es auch nicht so schwierig war, die Staffelpreise zu erhalten, da diese in einem Array verfügbar sind $_product->getFormatedTierPrice() (beachten Sie die falsche Schreibweise!).

Dieses Array sieht folgendermaßen aus:

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
        )

)

Ich benötige nur 2 Elemente aus diesem mehrdimensionalen Array:[Preismenge] und [formatierter Preis].

Also bin ich mit dem folgenden Code gelandet:

$_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

Und in meiner Preistabelle habe ich jetzt:

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

Mit else { echo $_single;} Ich stelle sicher, dass ich, wenn jemand die Anzahl der Stufen im Backend geändert hat (die Anzahl der Stufen ist derzeit in meinem HTML fest codiert), mindestens den Einzelproduktpreis anstelle von gar keinem Preis ausgebe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top