Maison  >  Questions et réponses  >  le corps du texte

Accéder aux variantes de chaque article du panier Shopify

Tout d'abord, j'aime toujours publier des exemples fonctionnels, mais comme il s'agit d'un mélange de js et de liquide de rendu côté serveur sur Shopify, je ne peux pas obtenir d'exemple fonctionnel.

Dans Shopify, vous pouvez accéder à product 对象,如下所示 {{ Product }} à partir des modèles de produits.

L’objet

Cart en a un et l’objet items 属性,它是购物车中所有商品的数组。购物车中的每个 item 对象与 product 对象不同。 product 对象有一个变体列表,而 cart item n’en a pas.

Le but est de pouvoir modifier la taille des articles dans le panier.

Ma question est la suivante : comment puis-je obtenir toutes les variantes liées ? Vous devez accéder au produit et obtenir une liste de toutes les variantes qu'il contient, obtenir product_id parmi les variantes.

La raison pour laquelle cela est délicat est que lorsque vous obtenez la réponse get pour l'objet panier, vous en obtenez un item 获得一个 product_id pour chaque élément du panier. Mais vous ne pouvez obtenir l'objet produit que si vous êtes sur la page produit.

Juste pour vous aider à visualiser le panier, comme ceci :

{
  items: [
    {
      handle: 'product-handle',
      product_id: 123,
      variant_title: 'product variant'
    }
  ]
}

Ce qui doit être complété est :

{
  items: [
    {
      handle: 'product-handle',
      product_id: 123,
      /**
       * to get this you need first access to the product object from the product 
       * template. You could convert the product to json with a filter
       * e.g. const product = {{ product | json }} but you don't have the 
       * opportunity to be on the product template each time you edit a cart item
      */
      variants: [
        { color: 'white', size: 's' },
        { color: 'white', size: 'm' }
      ]
    }
  ]
}


P粉841870942P粉841870942294 Il y a quelques jours556

répondre à tous(2)je répondrai

  • P粉116654495

    P粉1166544952023-12-30 18:20:28

    Si vous disposez d'un identifiant ou d'un identifiant de produit, vous pouvez toujours appeler Shopify pour obtenir plus d'informations sur le produit, telles que toutes les variantes attribuées au produit et toutes les options. Ainsi, pour passer à une option différente, vous devez supprimer l’ID de variante de votre panier et ajouter l’ID différent souhaité. Vous pouvez utiliser les appels StorefrontAPI pour obtenir des informations sur le produit. C'est généralement ainsi que les commerçants font ce que vous devez faire.

    répondre
    0
  • P粉547362845

    P粉5473628452023-12-30 16:44:07

    Après une journée entière de lutte, j'ai enfin compris. Pour toute autre personne ayant rencontré ce problème, vous devez faire quelque chose de similaire.

    À partir du modèle de panier, cart.liquid

    const cart = (() => {
      const cart = {{ cart | json }}
      const items = []
      let variants
    
      {% for item in cart.items %}
        item = {{ item | json }}
        variants = []
    
        {% for variant in item.product.variants %}
          variant = {{ variant | json }}
          variants.push(variant)
        {% endfor %}
    
        item.variants = variants
        items.push(item)
      {% endfor %}
      cart.items = items
    
      return cart
    })();
    

    Vous disposez désormais de variantes pour chaque attribut d’article dans votre panier.

    répondre
    0
  • Annulerrépondre