En el siguiente tutorial, explicamos cómo agregar el componente de descuentos progresivos, para poder mostrar múltiples descuentos por cantidad sobre un mismo producto.
El código en este tutorial incluye:
- Una tabla para mostrar los descuentos progresivos
- El label en la imagen del producto para mostrar el máximo descuento disponible
HTML
1. En el archivo labels.tpl vamos a modificar el siguiente código para agregar el label de descuento progresivo en la imagen del producto
<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>
Lo vamos a modificar por esto
{% 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. En el archivo product/product-form.tpl vamos a buscar el siguiente 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 %}
y reemplazarlo 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. Agregamos el siguiente SASS de colores en style-colors.scss.tpl (o la hoja de tu diseño que tenga los colores y tipografías de la tienda). Recordá que las variables de colores y tipografías pueden variar respecto a tu diseño:
{# /* // 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 a mover los estilos de la tabla del archivo static/style-async.scss.tpl al archivo static/style-critical.tpl. Si en tu diseño no usas una hoja de estilos para el CSS crítico, entonces este paso no es necesario.
Borramos 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;
}
}
Y pegamos este en 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;
}
Traducciones
En este paso agregamos los textos para las traducciones en el archivo 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"
Activación
Listo, una vez que se cree un descuento progresivo en el administrador, se verán aplicados a los productos en tu tienda.