Цены уровней в таблице цен


Я ищу таблицу цен (на главной странице) для одного конкретного продукта, но 3 разных (предопределенных) количества.

Показать товар и правильно добавить в корзину ссылки на странице было относительно легко:

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

Получить цену за 1 кол-во, включая налоги, валюту и некоторое форматирование, также было легко:

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

Это приводит к <span class="price">€15,00</span>

Однако моя цель - иметь таблицу цен например:

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

Получить цену кол-во *Х тоже было несложно:

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

Как и ожидалось, это приводит к <span class="price">€10,00</span>

Однако, несмотря на то, что я меняю $_qty, выходные данные остальных 2 цен всегда совпадают с первой.

Иллюстрация:

$_price_1 = Mage::helper('core .... $_product->getFinalPrice(1))); результаты в €15
$_price_2 = Mage::helper('core .... $_product->getFinalPrice(5))); приводит также к €15
$_price_3 = Mage::helper('core .... $_product->getFinalPrice(10)); приводит также к €15

Я предполагаю, что это как-то связано с кэшированием Magento цены продукта после первого поиск.

У кого-нибудь есть подсказка о том, как правильно создать эту таблицу?

Author: Ottonet, 2015-06-12

1 answers

Оказывается, получить цены на уровне также было не так сложно, так как это доступно в массиве $_product->getFormatedTierPrice() (обратите внимание на неправильное написание!).

Этот массив выглядит следующим образом:

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
        )

)

Мне требуется только 2 элемента из этого многомерного массива: [price_qty] и [formated_price].

Таким образом, я получил следующий код:

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

И в моей таблице цен теперь у меня есть:

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

С else { echo $_single;} Я гарантирую, что если кто-то изменил количество уровней в бэкэнде (количество уровней в настоящее время жестко закодированы в моем phtml) Я, по крайней мере, вывожу единую цену продукта, а не цену вообще.

 1
Author: Ottonet, 2015-06-12 15:59:17