Как получить скидку
Я создаю правило цены каталога в admin. Теперь это применяется в интерфейсе. Но я хочу показать фактическую цену в корзине покупок. Поэтому я сделал приведенный ниже код в файле abstract.php
. После этого я вызываю его в default.phtml
. Теперь я вижу, что цена продукта отображается так, как я хочу. Но теперь мне нужно показать одну строку со сниженной ценой перед надписью "Общая сумма".
public function getPriceWithoutDiscount()
{/*Edit by Yesh*/
if ($this->getProductId()) {
$productID = $this->_getData('product');
$productID = $this->getProductId();
$product = Mage::getModel('catalog/product')->load($productID);
$price = $product->getPrice();
}
return $price;
}
Есть какие-нибудь предложения?
Пожалуйста, посмотрите мой скриншот
4 answers
Если вы хотите, чтобы скидка применялась в итоговых суммах, вам следует использовать правила цен корзины покупок, а не правила цен каталога. Можно указать правила ценообразования в корзине покупок на основе товаров в корзине, а также применять скидки только к определенным товарам.
Тогда остается единственная проблема - отобразить исходную цену со скидкой на странице сведений о продукте, которую намного проще решить, чем то, что вы пробовали изначально (только внешний интерфейс, никаких изменений во внутренней цене и общей сумме расчет)
Для одного продукта, я думаю, вы можете использовать $product->getPrice()
- $product->getFinalPrice()
Для всего заказа используйте это: $order->getBaseDiscountAmount()
. Пожалуйста, обратите внимание, что значение, возвращаемое этим методом, является отрицательным. Итак, допустим, у вас есть скидка в 60 долларов. Это даст вам -60, поэтому имеет смысл использовать его так: abs($order->getBaseDiscountAmount())
. Для использования, отличного от базовой валюты $order->getDiscountAmount()
.
В первый шаблон, который вам нужно адаптировать, находится по адресу: app/design/frontend/base/default/template/checkout/cart/item/default.phtml
. Также взгляните на app/design/frontend/base/default/template/checkout/cart/cart.phtml
в строке 131 (Magento 1.8.0.0), запускается процесс рендеринга для каждого отдельного элемента.
Вот подробное описание: в app/design/frontend/base/default/template/checkout/cart/item/default.phtml
их несколько. Именно здесь вам нужно внести изменения. Также НЕ РЕДАКТИРУЙТЕ ОСНОВНЫЕ ФАЙЛЫ.
Для получения подробной информации о ценах при оформлении заказа ознакомьтесь с этой статьей: http://nikunjvadariya.wordpress.com/2013/06/17/magento-get-checkout-cart-total-details-subtotalgrandtotaldiscounttax/
Попробуйте это.
Следующий код показывает, как получить сумму скидки, если она применяется.
$totalItemsInCart = Mage::helper(‘checkout/cart’)->getItemsCount(); //total items in cart
$totals = Mage::getSingleton(‘checkout/session’)->getQuote()->getTotals(); //Total object
$subtotal = round($totals["subtotal"]->getValue()); //Subtotal value
$grandtotal = round($totals["grand_total"]->getValue()); //Grandtotal value
if(isset($totals['discount']) && $totals['discount']->getValue()) {
$discount = round($totals['discount']->getValue()); //Discount value if applied
} else {
$discount = '';
}
Функция renderTotals()
в app/code/core/Mage/Checkout/Block/Cart/Totals.php
отвечает за отображение того раздела, который вы выделили на своем изображении. Если вы проверите эту функцию, то увидите, что этот метод возвращает итоговые значения в виде фрагмента html-кода.
Вы можете переопределить этот класс и добавить значение скидки внутри этой функции.
ПРИМЕЧАНИЕ: Не редактируйте основные файлы
Метод, который вы ищете, - это
$product->getOriginalPrice()