Цены уровней в таблице цен
Я ищу таблицу цен (на главной странице) для одного конкретного продукта, но 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 цены продукта после первого поиск.
У кого-нибудь есть подсказка о том, как правильно создать эту таблицу?
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) Я, по крайней мере, вывожу единую цену продукта, а не цену вообще.