Alteração de layout para assinaturas
Como incluir as assinaturas no front-end da loja
O recurso de Assinaturas precisa de uma adaptação no front-end da loja para que a funcionalidade fique disponível na vitrine. Essa alteração no front-end é a responsável por delimitar na vitrine quais produtos podem ser adicionados em uma compra por assinatura. Nesse artigo você encontra o que você deve alterar no layout da loja para que a vitrine suporte o recurso de Assinaturas.
Para fazer as alterações, certifique-se ter comprido com sucesso as configurações entre plataformas e o cadastro de produtos de assinatura.
Inclua o código abaixo no arquivo product.liquid do template da loja.
<form data-form-product-assinatura>
<input type="hidden" id="quantity" name="quantity" value="1">
{% assign mainVariant = product.variants | where: 'main', true | first %}
<input type="hidden" name="sku" value="{{ mainVariant.sku }}">
<input type="hidden" name="extra[vindi_plan_id]" value="{{ mainVariant.properties.property1.value }}">
<button
type="submit"
class="add-to-cart-button"
data-action="add-cart-assinatura"
data-event="addToCart"
data-event-json='{% gtm item:product %}'>
Assinar
</button>
<div class="msg-response" id="erro-adicionar-assinatura">
<span class="msg"></span>
</div>
</form>
<script>
var urlHome = "{{ home_url }}"
var urlAssinaturaCartAdd = urlHome + 'assinaturas/carrinho/itens';
$("[data-form-product-assinatura]").on("submit", function(){
var data = {};
data.subscription_item = {
quantity: this.find('[name="quantity"]').val(),
sku: this.find('[name="sku"]').val(),
extra: {
vindi_plan_id: this.find('[name="extra[vindi_plan_id]"]').val()
}
}
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
xhrFields: {
withCredentials: true
},
})
.done(function (resp) {
console.log("success");
})
.fail(function (xhr, status, error) {
console.log("error");
})
.always(function () {
console.log("complete");
});
})
</script>
Considerações sobre o código:
- O arquivo
producto.liquid
é responsável pelas informações da página do produto, e o código acima adiciona um formulário com o botão de assinaturas. Assim os clientes podem adicionar os produto de compra por assinatura no carrinho. - No código, os parâmetros
sku
evindi_plan_id
são os códigos identificadores dos produtos e planos de assinatura. O códigosku
é o código identificador do produto, e o códigovindi_plan_id
é o código identificador do plano de assinatura disponível para o produto. - Note que utilizamos no código a
property1
para chamar a variável que contém o códigovindi_plan_id
. Isso porque utilizamos como padrão o atriburo 1 (na variante do produto) para identificar o plano e assinatura. Lembre-se de manter a coerência entre a variável do layout e o cadastro de produto. Saiba mais em Relação entre o atributoPlano Vindi
e a alteração de layout. - O campo
quantity
é referente as unidades de itens para assinatura. Essa é a quantidade de itens que o cliente final adicionará na assinatura quando clicar no botão de assinaturas. Por padrão, esse valor é1
unidade. - Nesse código utilizamos o envio das informações por JavaScript com a biblioteca jQuery. No entanto, você também pode ser utilizar da biblioteca Vanilla JS.
- Os dados do formulário são enviados para
URLdaLoja/assinaturas/carrinho/itens
.
Updated about 1 year ago