Tema
SDK Referansı
bash
npm install winkwop-theme-sdkts
import { winkwop } from 'winkwop-theme-sdk';winkwop istemcisi vitrin tarafından mağazaya bağlı kurulur. Yerel geliştirmede aynı paket configureWinkwop() ile bağlanır — bileşen kodunuz iki ortamda da aynıdır.
store
ts
winkwop.store.domain // "magazam"products
ts
products.list(options?) → WinkwopProduct[]
products.page(options?) → ProductPage // aynı sorgu + sayfalama bilgisi
products.get(idOrSlug) → WinkwopProductDetail // seçenekler + varyantlar
products.facets(options?) → WinkwopFacets // fiyat aralığı, markalar, kategorileroptions (ProductQuery): category, search, sort, limit, page, minPrice, maxPrice, brands, inStock.
ts
const { products, total, has_next } = await winkwop.products.page({
category: 'ayakkabi',
sort: 'price_asc',
limit: 12,
});Listeleme için önce veri prop'unu düşünün
Sunucuda çözüldüğü için ilk boyamada veri hazır olur ve mağaza sahibi kaynağı kendisi seçebilir → Veri bağlama.
categories
ts
categories.list() → WinkwopCategory[]
categories.get(idOrSlug) → WinkwopCategorycart
Sepet ilk çağrıda kendiliğinden oluşur ve tarayıcıda saklanır; kurulum gerekmez. Her işlem sepetin son hâlini döner — kendiniz yeniden çekmeniz gerekmez.
ts
cart.get() → WinkwopCart
cart.add(productId, quantity?, variantId?) → WinkwopCart
cart.updateItem(itemId, quantity) → WinkwopCart
cart.removeItem(itemId) → WinkwopCart
cart.previewCoupon(code) → WinkwopCouponPreview
cart.checkoutUrl() → stringpreviewCoupon kuponu kullanmaz, yalnızca indirimi hesaplar. Gerçek kullanım sipariş anında yazılır.
Varyantlı üründe variantId zorunlu
Stok varyant satırlarında tutulur. Seçenekli bir ürünü variantId olmadan sepete eklerseniz o kalem hiçbir zaman sipariş edilemez. Ürün kartındaki hızlı ekleme düğmesi seçenekli üründe sepete eklememeli, detay sayfasına götürmelidir.
Sepet yanıtı otomatik kampanyayı da taşır:
ts
cart.discount_name // "Yaz Kampanyası" | undefined
cart.discount_amount // kampanya indirimi
cart.discount_free_shipping // kampanya kargo bedava veriyor mu
cart.total // ara toplam − kampanyapayments
ts
payments.methods() → WinkwopPaymentMethod[]Bu satış kanalında açık ödeme yöntemleri. Sırlar (API anahtarı vb.) asla gelmez; yalnızca müşteriye gösterilmesi güvenli alanlar döner.
checkout
ts
checkout(input) → CheckoutResultSiparişi tamamlar; başarılıysa sepet kapanır.
Pratikte bunu çağırmanız gerekmez: ödeme sayfası platformun sabit sayfasıdır → Sayfalar. cart.checkoutUrl() ile yönlendirin.
customer
Müşteri hesabı. Oturum jetonu tarayıcıda saklanır; sipariş ve adres uçları jetonu otomatik taşır.
ts
customer.register(input)
customer.login(email, password)
customer.logout()
customer.me()
customer.orders()
customer.addresses()Yerel geliştirme
ts
import { configureWinkwop, isWinkwopReady } from 'winkwop-theme-sdk';
configureWinkwop({ apiUrl: 'http://127.0.0.1:3050/api/v1', storeDomain: 'dev-magaza' });CLI ile kurulan projede bu zaten src/dev.tsx içinde yapılır; elle çağırmanız gerekmez.
Hata yönetimi
Tüm çağrılar Promise döner ve hata durumunda reject eder. Bölümünüz veriyi çekemediğinde çökmemeli:
ts
useEffect(() => {
winkwop.cart.get().then(setCart).catch(() => setCart(null));
}, []);