Sepeti boşaltmayan sepete ekle linkleri ve butonları

Ürünü Shopify sepetine, mevcut sepeti silmeden ekleyin: return_to ile /cart/add ürün formu, /cart/add.js çağrısı ve permalink’in ne zaman daha doğru olduğu.

Form
POST /cart/add ({% form 'product' %})
JavaScript
items[] ile POST /cart/add.js
Düz link
Sepet permalink’i /cart/<varyant ID>:<adet>
Plan
Her plan
Son kontrol

Kısaca

Shopify, mevcut sepete ürün eklemenin iki yolunu belgeliyor: /cart/add adresine gönderilen ürün formu ve JavaScript’ten /cart/add.js’e yapılan POST isteği. Form varsayılan olarak sepet sayfasını açar; return_to: 'back' ile müşteri bulunduğu sayfada kalır. E-posta ya da biyografi gibi yerlerde düz bir link gerekiyorsa sepet permalink’i (/cart/<varyant ID>:<adet>) kullanın; bu link sepetin yerine geçer ve ödeme sayfasını açar.

Nasıl kullanılır

  1. Ürün şablonu ya da section içinde, gizli bir id alanını (varyant ID’si) ve adedi {% form 'product', product %} etiketiyle sarın.
  2. Müşteriyi sepet yerine aynı sayfaya döndürmek için form etiketine return_to: 'back' ekleyin.
  3. Sayfa yenilemeden eklemek için Shopify.routes.root + 'cart/add.js' adresine {items: [{id, quantity}]} JSON’u gönderin ve 422 yanıtını ele alın.
  4. Her yerde çalışan bir link gerekiyorsa sepet permalink’i oluşturun ve gizli pencerede test edin.

Kod

add-to-cart.js
// Adds a variant to the cart without leaving the page. Shopify.routes.root
// keeps the market's language path (/fr/), so prices stay in the right currency.
async function addToCart(variantId, quantity = 1) {
  const response = await fetch(window.Shopify.routes.root + 'cart/add.js', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({items: [{id: variantId, quantity}]}),
  });
  const data = await response.json();
  // 422 means sold out, not enough stock, or an unknown variant ID.
  if (!response.ok) throw new Error(data.description || 'Could not add to cart');
  return data;
}

addToCart(12345678901234, 2).catch((error) => console.error(error.message));
add-to-cart-form.liquid
{%- comment -%}
  An add-to-cart button that keeps the customer on the page they were on.
  The product form posts to /cart/add, which adds to the existing cart
  (a /cart/ permalink replaces it). return_to: 'back' overrides the default
  redirect to the cart page.
{%- endcomment -%}
{%- assign variant = product.selected_or_first_available_variant -%}
{% form 'product', product, return_to: 'back' %}
  <input type="hidden" name="id" value="{{ variant.id }}">
  <input type="hidden" name="quantity" value="1">
  <button type="submit" {% unless variant.available %}disabled{% endunless %}>
    Add to cart
  </button>
{% endform %}
which-link.txt
# Documented ways to add to the cart
POST /cart/add          product form ({% form 'product' %}), adds to the existing cart
POST /cart/add.js       Ajax Cart API, returns JSON, adds to the existing cart
GET  /cart/<variant ID>:<qty>   cart permalink, replaces the cart and opens checkout

# A plain link someone can click (email, chat, social bio): use a cart permalink
https://your-store.com/cart/12345678901234:1

# Same, but open the cart page instead of checkout
https://your-store.com/cart/12345678901234:1?storefront=true

# return_to values for the product form
return_to: 'back'                 the page the customer was on
return_to: '/collections/all'     a relative path
return_to: routes.root_url        a routes attribute

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • /cart/add?id=…&quantity=… gibi bir GET linki Shopify dokümantasyonunda yer almıyor; kampanyalarda buna güvenmeyin. Belgelenmiş link biçimi sepet permalink’leridir.
  • Stoktan fazlasını isterseniz /cart/add.js stokta olanı ekler ve açıklamalı bir 422 hatası döner.
  • GraphQL Admin API ile yapılan değişikliklerin Cart API’ye ulaşması birkaç saniye sürebilir; yeni oluşturulan bir varyant ilk anda “Cannot find variant” döndürebilir.
  • Adresi Shopify.routes.root ya da routes.cart_add_url ile kurun; böylece /fr/ altındaki ziyaretçi dilini ve para birimini korur.

Sık sorulan sorular

Shopify’da sepet sayfasına gitmeden nasıl sepete eklenir?
Ürün formu etiketine return_to: 'back' ekleyin ya da isteği JavaScript ile /cart/add.js’e gönderip sepet çekmecesini kendiniz güncelleyin.
/cart/add?id= link olarak çalışır mı?
Shopify /cart/add’i form POST’u, /cart/add.js’i JSON POST’u olarak belgeliyor; GET linki olarak değil. Tıklanabilir bir link için /cart/12345678901234:1 gibi bir sepet permalink’i kullanın.
/cart/add ile sepet permalink’i arasındaki fark nedir?
/cart/add, müşterinin mevcut sepetine ekler. Sepet permalink’i ise sepeti linkteki ürünlerle değiştirir ve ödeme sayfasını (ya da ?storefront=true ile sepet sayfasını) açar.
Birden fazla ürünü aynı anda ekleyebilir miyim?
Evet. /cart/add.js her varyant için bir nesne içeren items dizisi alır; sepet permalink’i de virgülle ayrılmış varyant:adet çiftleri kabul eder.
  • Gösterilen tarihte bir Shopify mağazasında denendi. Shopify yönetim panelini sık değiştirir; bir adım farklı görünüyorsa fikir genellikle hâlâ geçerlidir.
  • Örneklerde yer tutucu ID’ler ve your-store.myshopify.com kullanılır. Kendi değerlerinizle değiştirin.
  • Kod parçaları MIT lisanslıdır.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: Shopify geliştirme.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.