No próximo tutorial, explicamos como adicionar o componente de descontos progressivos, para exibir múltiplos descontos por quantidade em um mesmo produto.


O código neste tutorial inclui:
- Uma tabela para mostrar os descontos progressivos
- O rótulo na imagem do produto para exibir o desconto máximo disponível
HTML
1. No arquivo labels.tpl, vamos modificar o seguinte código para adicionar o rótulo de desconto progressivo na imagem do produto.
<div>{{ product.promotional_offer.selected_threshold.discount_decimal_percentage * 100 }}% OFF</div><div class="label-small p-right-quarter p-left-quarter">{{ "Comprando {1} o más" | translate(product.promotional_offer.selected_threshold.quantity) }}</div>
Vamos substituí-lo por este
{% if product.promotional_offer.parameters | length > 1 %}<div>{{ "Hasta {1}% OFF" | translate(product.promotional_offer.selected_threshold.discount_decimal_percentage * 100) }}</div><div class="label-small p-right-quarter p-left-quarter">{{ "Comprando en cantidad" | translate }}</div>{% else %}<div>{{ product.promotional_offer.selected_threshold.discount_decimal_percentage * 100 }}% OFF</div><div class="label-small p-right-quarter p-left-quarter">{{ "Comprando {1} o más" | translate(product.promotional_offer.selected_threshold.quantity) }}</div>{% endif %}
2. No arquivo product/product-form.tpl, vamos procurar o seguinte código
{% for threshold in product.promotional_offer.parameters %}
<h4 class="mb-2 text-accent"><strong>
{{ "¡{1}% OFF comprando {2} o más!" | translate(threshold.discount_decimal_percentage * 100, threshold.quantity) }}
</strong></h4>
{% endfor %}E substituí-lo por este código
{% if product.promotional_offer.parameters | length > 1 %}
{{ component('progressive-discounts-table', {
progressive_discounts_classes: {
title: 'text-accent mb-3',
table: 'table mb-2',
hidden_table: 'table-body-inverted',
show_more_link: 'btn-link btn-link-primary mb-4',
show_more_icon: 'icon-inline',
hide_icon: 'icon-inline icon-flip-vertical',
promotion_quantity: 'font-weight-light text-lowercase'
},
svg_sprites: false,
custom_control_show: include("snipplets/svg/chevron-down.tpl", { svg_custom_class: "icon-inline icon-w-14 icon-md ml-2" }),
custom_control_hide: include("snipplets/svg/chevron-up.tpl", { svg_custom_class: "icon-inline icon-w-14 icon-md ml-2" }),
}) }}
{% else %}
{% set threshold = product.promotional_offer.parameters[0] %}
<h4 class="mb-2 text-accent"><strong>
{{ "¡{1}% OFF comprando {2} o más!" | translate(threshold.discount_decimal_percentage * 100, threshold.quantity) }}
</strong></h4>
{% endif %}
CSS
1. Adicionamos o seguinte SASS de cores no arquivo style-colors.scss.tpl (ou na folha de estilo do seu design que contém as cores e tipografias da loja). Lembre-se de que as variáveis de cores e tipografias podem variar de acordo com o seu design:
{# /* // Tables */ #}.table{background-color: $main-background;color: $main-foreground;tbody{tr:nth-child(odd){background-color: rgba($main-foreground, .05);}&.table-body-inverted{tr:nth-child(even){background-color: rgba($main-foreground, .05);}tr:nth-child(odd){background-color: $main-background;}}}th{padding: 8px;text-align: left;}}
2. Vamos mover os estilos da tabela do arquivo static/style-async.scss.tpl para o arquivo static/style-critical.tpl. Caso o seu design não utilize uma folha de estilo para o CSS crítico, este passo não é necessário.
Apagamos este código de static/style-async.scss.tpl
{# /* // Tables */ #}.table{width: 100%;border-collapse: collapse;border-spacing: 0;thead{th{padding: 8px;&:first-of-type{padding-left: 0;}}}td{padding: 8px;text-align: left;}}
E colamos este em static/style-critical.tpl
{# /* // Tables */ #}.table{width: 100%;border-collapse: collapse;border-spacing: 0;}.table thead th{padding: 8px;}.table thead th:first-of-type{padding-left: 0;}.table td{padding: 8px;text-align: left;}
Traduções
Nesta etapa, adicionamos os textos para as traduções no arquivo config/translations.txt
es "Hasta {1}% OFF"pt "Até {1}% OFF"en "Up to {1}% OFF"es_mx "Hasta {1}% OFF"es "Comprando en cantidad"pt "Comprando em quantidade"en "Buying in quantity"es_mx "Comprando en cantidad"
Ativação
Pronto! Assim que um desconto progressivo for criado no administrador, ele será aplicado aos produtos na sua loja.