Özel Scriptlere Genel Bakış

Script sistemi ve çalışma anı

Özel scriptler, belirli sayfalarda çalışan kendi JavaScript ve CSS kodunuzu Selwise üzerinden yönetmenizi sağlar: kod panelde durur, hangi sayfalarda çalışacağını bir yol kuralı belirler, sitenize deploy gerekmez.

Panelde nerede

Sol menüde Kanallar → Özel Scriptler (Channels → Custom Scripts) (/dashboard/scripts). Üç koşul gerekir:

  • Rol: yalnızca admin. marketing rolü satırı görmez, adresi yazsa da ana sayfaya döner.
  • Kanal: yalnızca web sitesi kanalı. Uygulama kanalında satır yoktur, çünkü script bir <script> etiketiyle sayfaya enjekte edilir.
  • Modül: gerekmez. Özel scriptler her hesaba dahildir (çekirdek özellik); yalnızca yapay zekâyla yazmak için AI Studio modülü ve AI kredisi gerekir.

Neden Selwise üzerinden

AvantajAçıklama
Deploy gerekmezPanelden kaydedersiniz; sonraki sayfa yüklemesinde yeni kod çalışır
Sayfa hedeflemeHangi yollarda çalışacağını kural ile belirlersiniz
Açma/kapamaKodu silmeden devre dışı bırakırsınız
Değişiklik kaydıKim ne zaman değiştirdi Denetim Kayıtları'nda görünür (kodun kendisi değil, bir parmak izi)
Ortak kod, kanala özel yerleşimBir script bir kez yazılır; her kanalda farklı yol kuralıyla eklenebilir

Ne zaman kullanılmaz

DurumDoğru yer
Widget içeriğiCustom Widget
Ürün sayfası içeriğiÜrün Zenginleştirme
Kart tasarımıÖzel Kart Oluşturma
Sitenizin kalıcı işleviTemanız

Özel scriptler bir kaçış kapağıdır; ilk çözüm değil.

Çalışma modeli

Bunu bilmek, "neden çalışmadı"yı çözer:

  1. Sayfa yüklenince Selwise, geçerli yolu (location.pathname; sorgu dizesi ve # hariç) kanal anahtarıyla birlikte sorar: GET /public/sites/KANAL_ANAHTARI/scripts?path=….
  2. Yanıt, etkin olan ve yol kuralı eşleşen scriptleri döndürür.
  3. Her script için önce CSS, <head> içine bir <style> olarak eklenir; sonra JavaScript, <body>'nin sonuna klasik bir <script> etiketi olarak yazılır.
  4. Kod tam sayfa yüklemesi başına bir kez çalışır.

Sonuçları:

  • Kod bir fonksiyona sarılmaz: üst düzey const/var global olur ve üst düzey return söz dizimi hatasıdır. Kodunuzu kendiniz (function () { … })(); ile sarın.
  • import/export (modül) çalışmaz.
  • Zamanlama seçeneği yoktur (immediate, domReady gibi). Kod, Selwise başladıktan sonra çalışır; temanızın DOM'u o anda tamamlanmamış olabilir — elemanı bekleyin (MutationObserver ya da DOMContentLoaded).
  • Tek sayfa uygulamasında (route değişimi sayfayı yenilemeyen mağaza) kod yeniden çalışmaz. Selwise yol değişince enjekte edilen <script> ve <style> öğelerini kaldırır ama yapılan işi geri almaz (eklenmiş dinleyiciler ve DOM düğümleri kalır) ve scripti yeniden çalıştırmaz. Sonuç: CSS ilk gezintiden sonra kalkar. Rota değişimini kendiniz izleyin — bkz. Sayfa Hedefleme.
  • Test modu yoktur. Script test moduna bağlanmaz: etkin ve yolu eşleşen her ziyaretçide çalışır. Önce tarayıcı konsolunda deneyin; panelde Preview (Önizleme) yalnızca örnek bir sayfada çalıştırır.

Güvenlik ve sınırlar

KonuDavranış
KimlikScript yalnızca doğrulanmış bir kanalda ve geçerli Origin ile sunulur; abonelik teslimata açık olmalıdır. Doğrulanmamış kanalda script de çalışmaz.
Çerez onayıHiçbir şey onaya bağlı değildir. Selwise script'i onay beklemeden enjekte eder; çerez ya da yerel depolama kullanıyorsanız kodunuz önce window.Selwise.getConsentState() ile izni kontrol etmelidir — bkz. Onay Yönetimi.
YetkiKod sayfayla aynı yetkiyle çalışır: ödeme sayfası dahil sayfadaki her şeyi okuyabilir. Kişisel veri okumayın, üçüncü tarafa göndermeyin.
CSPScript satır içi (inline) enjekte edilir. Sitenizin Content-Security-Policy başlığı satır içi scripti yasaklıyorsa (nonce/hash olmadan) tarayıcı onu engeller; konsolda CSP hatası görürsünüz. Çözüm sitenizin politikasındadır.
BoyutJavaScript en fazla 50.000, CSS en fazla 30.000, açıklama en fazla 1.000, ad en fazla 100, yol deseni en fazla 255 karakterdir. Aşan alan kayıtta adıyla reddedilir (400).
SayıÖzel script sayınız sözleşmedeki Custom scripts stok limitiyle sınırlıdır; dolunca yeni script oluşturulamaz (409).
HataScript'in kendi çalışma zamanı hataları tarayıcı konsoluna düşer ve sayfayı bozmamalıdır; kodunuz try/catch içinde olmalıdır. Enjeksiyon sırasında yakalanan hata script_error olayı olarak kaydedilir; başarılı enjeksiyon script_injected olarak.

Sırada ne var

Son güncelleme: 22 Ekim 2026