# 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.

Sayfa: https://lintelagency.com/tr/kaynaklar/shopify-ipuclari/sepete-ekle-linkleri

## 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.

## Bilgiler

- **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:** 2 Kasım 2026

## 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

```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

```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

```text
# 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
```

## 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.

## 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

- [Cart API reference](https://shopify.dev/docs/api/ajax/reference/cart)
- [Liquid form tag (return_to)](https://shopify.dev/docs/api/liquid/tags/form)
- [Create cart permalinks](https://shopify.dev/docs/apps/build/checkout/create-cart-permalinks)

## İlgili içerikler

- [Sepet permalink’leri: sepeti dolduran linkler](https://lintelagency.com/tr/kaynaklar/shopify-ipuclari/sepet-permalinkleri)
- [Varyant ID’sini vitrinden bulun](https://lintelagency.com/tr/kaynaklar/shopify-ipuclari/vitrinden-varyant-id-bulma)
- [Sabit sepete ekle çubuğu Shopify bölümü](https://lintelagency.com/tr/kaynaklar/shopify-bolumleri/sabit-sepete-ekle-cubugu)
- [Storefront API ile sepet oluşturma ve ürün ekleme](https://lintelagency.com/tr/kaynaklar/graphql/storefront-sepet-olusturma-ve-urun-ekleme)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
