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
- Ürün şablonu ya da section içinde, gizli bir id alanını (varyant ID’si) ve adedi {% form 'product', product %} etiketiyle sarın.
- Müşteriyi sepet yerine aynı sayfaya döndürmek için form etiketine return_to: 'back' ekleyin.
- 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.
- 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.
Shopify belgeleri
- 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.
