In the Magento 2 mini cart I would like to display the line item subtotal rather than unit price.
So in the example below the price in the minicart should be $90 because I've added two watches to the cart.
I see this Magento displays this price from a KnockoutJS template
app/code/Magento/Checkout/view/frontend/web/template/minicart/item/default.html
with this piece of code:
<!-- ko foreach: $parent.getRegion('priceSidebar') -->
<!-- ko template: {name: getTemplate(), data: item.product_price, as: 'price'} --><!-- /ko -->
<!-- /ko -->
The item
object contains item data like below:
canApplyMsrp:false
is_visible_in_site_visibility:true
item_id:"155"
product_has_url:true
product_id:"2"
product_image:Object
product_name:"Test Product"
product_price:"↵↵ <span class="price-excluding-tax" data-label="Excl. Tax">↵ <span class="minicart-price">↵ <span class="price">$45.00</span> </span>↵↵ </span>↵"
product_price_value:30
product_sku:"01002"
product_type:"simple"
product_url:"http://dev.example.com/test-product.html"
qty:2
In my theme, how can I override the current price value used, product_price
, to display the line item sub-total price instead? Properly formatted with the correct currency symbol.
So far I've tried the below:
<!-- ko template: {name: getTemplate(), data: item.product_price * item.qty, as: 'price'} --><!-- /ko --> // returns a NaN
<!-- ko template: {name: getTemplate(), data: item.product_price_value * item.qty, as: 'price'} --><!-- /ko --> // returns the correct price but without the currency symbol
Best Answer
You can set line item subtotal using below way, You dont need to use of knockout js anyway you can just setup your goal using below way,
You can get item qty using
$qty = $item->getQty();
Now just you have to set$block->getUnitDisplayPriceInclTax()*$qty
to get lineItem subtotal for each item.Final Solution,
app/design/frontend/{Packagename}/{themename}/Magento_Weee/templates/checkout/cart/item/price/sidebar.phtml
In above file i have just comment as custom logic at which place i have added price multiply $qty to get lineitem subtotal.
Clear cache and check it again.