折扣

折扣可以使用在购物车、结帐、订单项或者订单。这意味着折扣可以灵活地作用于特定的订单项目,或者整个购物车/订单。

在本教程中,你将学习如何在主题中显示折扣。

discounts.jpg


要求

你已经创建了购物车模板客户/订单模板


资源

要在你的主题中显示折扣,你将使用以下内容:

discount_application object

在购物车、订单或者结帐中使用了折扣后,就会存在 discount_allocation object。根据使用折扣的位置,你可以通过父对象获取对应的折扣信息。

discount_allocation object

discount_allocation object 将一个 discount_application 与一个订单项联系起来。

你可以使用 line_item.line_level_discount_allocations 访问与一个订单项相关的所有折扣信息。

line_item object

要完成价格展示,需要用到 line_item object 的 price 和 discount 属性,包括:

实现折扣显示

因为折扣可以使用于订单项、整个购物车或者订单,所以你需要在两个地方展示折扣信息:

本教程使用购物车作为例子。同样的,你可以调整这些例子,通过像使用购物车 object 一样去使用订单 object,将折扣添加到客户/订单模板中。

你可以直接在 handlebars 模板中实现这些组件,也可以在 JSON 模板的某个 section 中实现。


订单项折扣

如果订单项使用了折扣,就需要在订单项中展示折扣。要展示订单项的折扣,你需要在展示以下内容:

订单项价格

如果订单项使用了折扣,就需要对原始价格使用删除线,同时,展示新的折扣价。可以使用 Handlebars line_item object 的访问以下属性:

订单项折扣

如果订单项使用了折扣,就需要展示使用的每个折扣及其关联的折扣金额或总折扣金额。可以通过 Handlebars line_item object 的 line_level_discount_allocations 属性访问特定于订单项的折扣,并且可以通过该 line_level_total_discount 属性访问总订单项折扣。

例子

以下是输出价格和折扣显示的示例:

{{#each cart.items as |line_item| }}
{{#if line_item.original_price '>' line_item.final_price }}
<s>{{ money line_item.original_price }}</s>
{{/if}}
{{ money line_item.final_price }}
{{#if line_item.line_level_discount_allocations.length '>' 0 }}
Discounts:
<ul>
{{#each line_item.line_level_discount_allocations as |discount_allocation| }}
<li>
{{ discount_allocation.discount_application.title }}-{{ money discount_allocation.amount }}
</li>
{{/each}}
</ul>
{{/if}}
{{/each}}

example.jpg

备注

另外一个显示订单项折扣的例子,可以参考 Seed 的实现


购物车折扣

小计是使用订单项折扣后的订单项总额,总计是使用购物车折扣后的购物车总额。如果折扣适用于整个购物车,那么它应该展示在小计和总计之间。

购物车级别的折扣可以通过 cartorder object 的 cart_level_discount_applications 属性访问

Subtotal: {{ money cart.items_subtotal_price }}
{{#if cart.cart_level_discount_applications.length '>' 0 }}
Discounts:
<ul>
{{#each in cart.cart_level_discount_applications as |discount_application|}}
<li>
{{ discount_application.title }}-{{ discount_application.money total_allocated_amount }}
</li>
{{/each}}
</ul>
{{/if}}
Total: {{ money cart.total_price }}

example2.jpg

备注

另外一个显示订单项折扣的例子,可以参考 Seed 的实现

这篇文章对你有帮助吗?