T-SOFT/Tema Geliştirme/Data-Toggle Bileşenleri

Data-Toggle Bileşenleri

Temalardaki hazır JS bileşenleri HTML'e data-toggle attribute'u ile bağlanır. Bu sayfa tüm bileşenlerin tek referansıdır — üç kategoriye ayrılmıştır: Form & UI, Ürün & Vitrin ve Sepet, Üye & Site. Aradığınız bileşeni sağdaki içindekiler listesinden veya sayfa içi aramayla bulabilirsiniz.

Dataset yapısı

data-toggle, HTML elementlerine dinamik davranış eklemek için kullanılan bir attribute'tur. Tema JavaScript'i sayfa yüklendiğinde data-toggle değerlerini tarar ve ilgili bileşeni (form, popup, sekme, slider vb.) o elemente bağlar. Bileşenin davranışı, aynı element üzerindeki ek data-* parametreleriyle yapılandırılır.

örnek
<span data-toggle="tooltip" data-title="İpucu metni">...</span>
Bir bileşeni kullanmak için ekstra JavaScript yazmayın; doğru data-toggle değerini ve desteklenen data-* parametrelerini işaretlemeye eklemek yeterlidir.

Form & UI

Form gönderimi, popup, drawer, slider, accordion ve bölge seçimleri gibi arayüz bileşenleri.

data-toggle="flag"

Bir input alanında ülke bayraklarını gösterir; kullanıcının bayrak ikonlarıyla ülke seçmesini sağlar.

örnek
<input class="form-control" data-toggle="flag">

data-toggle="form-submit"

Form verilerini validasyondan geçirip bir uç noktaya (endpoint) gönderir. data-endpoint belirtilmişse bu uç noktaya, aksi halde action alanındaki URL'ye istek atılır; method belirtilmezse POST kullanılır. Uç noktalar /resources/assets/js/endpoint.js dosyasında tanımlanır.

AttributeAçıklama
data-endpointFormun gönderileceği uç nokta adı.
örnek
<form action="#" method="post" novalidate data-toggle="form-submit" data-endpoint="FORM"></form>

data-toggle="popup"

Açılır pencere (popup) gösterir. Belirtilen URL'den veri çekilir; data-property verilirse içerik, yanıtın ilgili özelliğinden (örneğin data.CONTENT) alınır.

AttributeAçıklama
data-idAçılır pencerenin benzersiz kimliği.
data-classAçılır pencereye eklenecek CSS sınıfı.
data-widthAçılır pencerenin genişliği (piksel).
data-titleAçılır pencerenin başlığı.
data-htmlAçılır pencereye eklenecek HTML içeriği.
data-timeoutOtomatik kapanma süresi (milisaniye).
data-disabled-closeKapatma düğmesini devre dışı bırakır (true/false).
data-urlİçeriğin çekileceği URL.
data-propertyVerinin alınacağı özellik (örneğin CONTENT, data.brand.bottom).
data-drawer1 verilirse içerik modal yerine yan tarafta drawer olarak açılır.
örnek
<span data-url="/srv/service/content-v5/fixed-page-content/-5" data-width="1000" data-property="CONTENT" data-toggle="popup">
    <!-- popup btn -->
</span>

data-toggle="country"

Kullanıcıların ülke seçebileceği bir dropdown menü oluşturur.

AttributeAçıklama
data-placeholderVarsayılan placeholder metni.
data-selectorSeçici türü (country).
örnek
<div class="form-item" data-toggle="country">
    <div class="relative">
        <select id="form-country-code" name="country" class="form-control" data-placeholder data-selector="country"></select>
        <label for="form-country-code" class="form-label capitalize">{{ t.country }}</label>
    </div>
</div>

data-toggle="city"

Şehir bilgisi girişi için input alanı sağlar; seçilen ülkeye göre şehir listesini bağlar.

AttributeAçıklama
data-placeholderVarsayılan placeholder metni.
data-targetHedef veri alanı (örneğin city_code).
data-selectorSeçici türü (city).
örnek
<div class="form-item" data-toggle="city">
    <div class="relative">
        <input id="form-city" type="text" name="city" class="form-control required" placeholder="{{ t.city }}" data-placeholder data-target="city_code" data-selector="city">
        <label for="form-city" class="form-label capitalize">{{ t.city }}</label>
    </div>
</div>

data-toggle="town"

İlçe/kasaba bilgisi girişi için input alanı sağlar.

AttributeAçıklama
data-placeholderVarsayılan placeholder metni.
data-targetHedef veri alanı (örneğin town_code).
data-selectorSeçici türü (town).
örnek
<div class="form-item" data-toggle="town">
    <div class="relative">
        <input id="form-town" type="text" name="town" class="form-control required" placeholder="{{ t.town }}" data-placeholder data-target="town_code" data-selector="town">
        <label for="form-town" class="form-label capitalize">{{ t.town }}</label>
    </div>
</div>

data-toggle="district"

Mahalle/semt bilgisi girişi için input alanı sağlar.

AttributeAçıklama
data-placeholderVarsayılan placeholder metni.
data-targetHedef veri alanı (örneğin district_code).
data-selectorSeçici türü (district).
örnek
<div class="form-item" data-toggle="district">
    <div class="relative">
        <input id="form-district" type="text" name="district" class="form-control required" placeholder="{{ t.district }}" data-placeholder data-target="district_code" data-selector="district">
        <label for="form-district" class="form-label capitalize">{{ t.district }}</label>
    </div>
</div>

data-toggle="state"

Eyalet/il bilgisi girişi için input alanı sağlar.

AttributeAçıklama
data-placeholderVarsayılan placeholder metni.
data-targetHedef veri alanı (örneğin province_code).
data-selectorSeçici türü (state).
örnek
<div class="form-item" data-toggle="state">
    <div class="relative">
        <input id="form-province" type="text" name="province" class="form-control required" placeholder="{{ t.province }}" data-placeholder data-target="province_code" data-selector="state">
        <label for="form-province" class="form-label capitalize">{{ t.province }}</label>
    </div>
</div>

data-toggle="accordion"

Tıklama ile içeriği açıp kapatan akordiyon bileşeni oluşturur.

AttributeAçıklama
data-accordion-mobileMobil cihazlarda akordiyon davranışını kontrol eder (true/false).
data-accordion-targetHedef içerik alanının ID'si.
data-urlİçeriğin çekileceği URL.
data-typedropdown verilirse bir başlık açıldığında diğerleri kapanır.
data-propertyVerinin alınacağı özellik (örneğin CONTENT, data.brand.bottom).
data-callbackİşlem sonrası çağrılacak JavaScript fonksiyonu.
örnek
<div data-toggle="accordion" data-type="dropdown">
    <div class="group active" data-accordion-mobile="true" data-accordion-target="#accordion-{{ BLOCK.ID }}{{ key }}" data-url="" data-property="CONTENT" data-callback="">
        <div class="accordion-title capitalize">
            <!-- Aktif button -->
        </div>
    </div>
    <div id="accordion-{{ BLOCK.ID }}{{ key }}" class="active">
        <!-- Aktif içerik -->
    </div>
    <div class="group" data-accordion-mobile="true" data-accordion-target="#accordion-{{ BLOCK.ID }}{{ key }}" data-url="" data-property="CONTENT" data-callback="">
        <div class="accordion-title capitalize">
            <!-- button -->
        </div>
    </div>
    <div id="accordion-{{ BLOCK.ID }}{{ key }}" class="hidden">
        <!-- İçerik -->
    </div>
</div>

data-toggle="tooltip"

Fare ile üzerine gelindiğinde, belirtilen başlıkla bir ipucu (tooltip) gösterir.

AttributeAçıklama
data-titleİpucunda gösterilecek metin.
örnek
<span data-toggle="tooltip" data-title="Bu bir ipucu başlığı"></span>

data-toggle="count-down"

Belirtilen tarihe kadar geri sayım yapan bir sayaç oluşturur.

AttributeAçıklama
data-timerGeri sayımın hedef tarihi (YYYY,MM,DD,HH,MM,SS formatında).
örnek
<div data-timer="2026,04,28,00,00,00" data-toggle="count-down">
    <div>
        <strong class="day">00</strong>
        <small>{{ t.day|default('Gün') }}</small>
    </div>
    <div>
        <strong class="hour">00</strong>
        <small>{{ t.hour|default('Saat') }}</small>
    </div>
    <div>
        <strong class="minute">00</strong>
        <small>{{ t.minute|default('Dakika') }}</small>
    </div>
    <div>
        <strong class="second">00</strong>
        <small>{{ t.second|default('Saniye') }}</small>
    </div>
</div>

data-toggle="share"

İçeriği paylaşmak için paylaşım düğmesi oluşturur. Mobil cihazlarda cihazın yerel paylaşım menüsünü açar; masaüstünde öntanımlı paylaşım düğmelerini gösterir.

AttributeAçıklama
data-urlPaylaşılacak içeriğin URL'si.
data-titlePaylaşılacak içeriğin başlığı.
örnek
<span class="relative group/share" data-toggle="share" data-url="{{ P.URL }}" data-title="{{ P.TITLE }}">
    <!-- Paylaş -->
    <div class="absolute start-0 p-4 bg-white rounded-custom hidden md:group-hover/share:flex">
        {{ snippet('share', {IMAGE_URL: BLOG.IMG2.PATH|default(BLOG.IMG1.PATH)|default(BLOG.IMAGE_URL)|default(BLOG.IMAGE), TITLE: BLOG.TITLE}) }}
    </div>
</span>

data-toggle="slider"

Swiper kütüphanesiyle kaydırıcı (slider) oluşturur. Callback fonksiyonu ile özelleştirilebilir; küçük resim (thumb) alanı için data-swiper-thumb kullanılır.

AttributeAçıklama
data-callbackSlider başlatıldığında veya değiştiğinde çağrılacak fonksiyon.
data-perviewFarklı ekran boyutları için görünen öğe sayısı (örneğin xs:2,sm:3,lg:3).
data-marginÖğeler arası boşluk (örneğin xs:16,sm:16,lg:24).
data-gridIzgara düzeni (örneğin xs:1,sm:2,lg:2).
data-loopSonsuz döngü (1/boş). Yazılmazsa varsayılan false.
data-directionKaydırma yönü (horizontal/vertical).
data-centerSlaytların ortalanması (true/false); yazılmazsa false. el.slideTo(1) gibi bir çağrıyla istenen slayt başlangıçta ortaya getirilebilir; loop ile daha iyi görünür.
data-speedGeçiş hızı (milisaniye).
data-effectGeçiş efekti (slide, fade vb.).
data-autoplayOtomatik oynatma süresi (saniye).
data-idPanelden gelen SETTING değerleri kullanılmak istenmediğinde data-toggle="slider" elementine benzersiz bir data-id tanımlanır.
data-pagination-dynamicSwiper dinamik sayfalama; en fazla 5 pagination noktası gösterir.
data-center-insufficienttrue verilirse slayt sayısı yetersizken tüm slaytları ortalar.
örnek
<div data-toggle="slider" data-callback="sliderBg">
    <div class="swiper" data-swiper data-perview="xs:2,sm:3,lg:3" data-margin="xs:16,sm:16,lg:24" data-grid="xs:1,sm:2,lg:2" data-loop="true" data-direction="horizontal" data-center="true" data-speed="1500" data-effect="slide" data-autoplay="3" data-pagination-dynamic="1">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <!-- İçerik -->
            </div>
        </div>
    </div>
    <div class="swiper" data-swiper-thumb>
        <div class="swiper-wrapper">
            <div class="swiper-slide w-20">
                <!-- Küçük resim -->
            </div>
        </div>
    </div>
</div>

<div data-toggle="slider" data-id="seconda-slide-in-a-slider-{BLOCK.RELATION_ID}">
    <div class="swiper" data-swiper data-perview="xs:2,sm:3,lg:3" data-margin="xs:16,sm:16,lg:24" data-grid="xs:1,sm:2,lg:2" data-loop="1" data-direction="horizontal" data-center="false" data-speed="1500" data-effect="slide" data-autoplay="3">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <!-- İçerik -->
            </div>
        </div>
    </div>
</div>

JavaScript callback örneği:

örnek
ON_PAGE_READY.push(function () {
    window['sliderBg'] = function (swiper) {
        swiper.options.on = {
            init: function (el) {
                const dataBg = el.slides[el.activeIndex].getAttribute('data-bg');
                swiper.element.style = dataBg;
                el.slideTo(1);
            },
            slideChange: function (el) {
                const dataBg = el.slides[el.activeIndex].getAttribute('data-bg');
                swiper.element.style = dataBg;
            },
        };
        swiper.init();
    };
});
Slider bloğu içinde panel ayarlarından bağımsız bir slider gerekiyorsa data-toggle="slider" yanına data-id="random-{{ BLOCK.ID }}" gibi benzersiz bir data-id ekleyin. Callback işleminden sonra swiper.init() çağrılmalıdır.

data-toggle="drawer"

Yan menü (drawer) açar ve içeriği belirtilen URL'den çeker.

AttributeAçıklama
data-drawer-targetHedef yan menü ID'si.
data-member-requiredÜye girişi gerekliliği (1/0).
data-urlİçeriğin çekileceği URL.
data-propertyVerinin alınacağı özellik (örneğin CONTENT, data.brand.bottom).
data-callbackİşlem sonrası çağrılacak fonksiyon.
data-positionYan menü konumu (left/right).
data-drawer-closedata-toggle="drawer" içindeki bir elemente eklenir; drawer'ın kapanmasını sağlar.
örnek
<div data-drawer-target="#drawer-{{ M.ID }}{{ BLOCK.ID }}" data-toggle="drawer" data-member-required="1" data-url="/srv/service/content-v5/fixed-page-content/-5" data-property="CONTENT" data-callback="">
    <span>Başlık</span>
    <span data-drawer-close>
        X
    </span>
</div>
<div id="drawer-{{ M.ID }}{{ BLOCK.ID }}" data-position="left" class="drawer">
    <div class="drawer-wrapper">
        <div class="drawer-container">
            <!-- İçerik -->
        </div>
    </div>
</div>

data-toggle="copy"

Tıklama ile belirtilen metni panoya kopyalar.

AttributeAçıklama
data-copy-textKopyalanacak metin.
örnek
<span data-toggle="copy" data-copy-text="Kopyalanacak metin">Kopyala</span>

data-toggle="tab"

Sekme (tab) bileşeni oluşturur; sekmeler arasında geçiş yapmayı sağlar. data-tab-group ile sekmeler gruplandırılabilir.

AttributeAçıklama
data-tab-targetHedef sekme ID'si.
data-propertyVerinin alınacağı özellik (örneğin CONTENT, data.brand.bottom).
data-urlİçeriğin çekileceği URL.
data-callbackİşlem sonrası çağrılacak fonksiyon.
data-tab-groupSekmeleri gruplandırmak için kullanılan kimlik (örneğin login-type).
örnek
<div data-toggle="tab">
    <div>
        <button type="button" class="active" data-tab-target="#tab-{{ BLOCK.ID }}1" data-property="CONTENT" data-url="/srv/service/content-v5/fixed-page-content/-5" data-callback="tabCallback">Başlık</button>
        <button type="button" data-tab-target="#tab-{{ BLOCK.ID }}2">Başlık 2</button>
    </div>
    <div>
        <div id="tab-{{ BLOCK.ID }}1" class="active">İçerik</div>
        <div id="tab-{{ BLOCK.ID }}2" class="hidden">İçerik 2</div>
    </div>
</div>

data-toggle="dropdown"

Tıklama ile açılır menü (dropdown) gösterir.

AttributeAçıklama
data-dropdownHedef dropdown ID'si.
data-dropdown-rightMenünün sağa hizalanması (true/false).
örnek
<div>
    <div data-dropdown="target-dropdown" data-toggle="dropdown" data-dropdown-right>
        <!-- Dropdown düğmesi -->
    </div>
    <div id="target-dropdown" class="dropdown-body">
        <div class="dropdown-inner">
            <!-- Dropdown içeriği -->
        </div>
    </div>
</div>

data-toggle="sticky"

Elemanı sayfanın üst kısmında sabit (sticky) tutar.

AttributeAçıklama
data-classSabit elemana eklenecek CSS sınıfı.
örnek
<div data-toggle="sticky" data-class="top-0"></div>

data-toggle="menu"

Menüye fare ile üzerine gelindiğinde active sınıfı ekleyen hover davranışı kazandırır.

örnek
<nav data-toggle="menu"></nav>

data-toggle="password-toggle"

Şifre alanının görünürlüğünü değiştirir; hedef input'u password ve text türleri arasında geçirir.

AttributeAçıklama
data-selectorHedef input alanının seçicisi.
örnek
<div class="form-group">
    <input id="login-password" type="password" name="password">
    <span data-selector="#login-password" data-toggle="password-toggle">Göster/Gizle</span>
</div>

data-toggle="captcha-toggle"

CAPTCHA resmini yeniler. Standart kullanım için snippet('security-code') ile dahil edilmesi önerilir.

AttributeAçıklama
data-selectorHedef CAPTCHA resminin seçicisi.
örnek
<div class="form-group">
    <span class="form-prepend">
        <img id="form-captcha-{{ BLOCK.ID }}" class="rounded-[4px]" src="/SecCode.php" width="100" height="30" alt="Güvenlik Kodu">
    </span>
    <div class="form-item">
        <div class="relative">
            <input id="security_code-{{ BLOCK.ID }}" type="text" name="security_code" class="form-control required" placeholder="{{ t.security_code }}" data-placeholder>
            <label for="security_code-{{ BLOCK.ID }}" class="form-label">{{ t.security_code }}</label>
        </div>
    </div>
    <span id="form-captcha-{{ BLOCK.ID }}-toggle" class="form-append cursor-pointer hover:text-primary" data-selector="#form-captcha-{{ BLOCK.ID }}" data-toggle="captcha-toggle">CAPTCHA Yenile</span>
</div>
örnek
{{ snippet('security-code') }}

Ürün & Vitrin

Ürün kartı, varyant seçimi, stok/vitrin gösterimi ve galeri bileşenleri.

data-toggle="product"

Ürün kartlarını yönetir; varyantların, fiyatların ve stok durumunun dinamik olarak güncellenmesini sağlar. Tüm ürün kartları için kritik bir bileşendir — aşağıdaki alt toggle'ların çalışması için data-toggle="product" kapsayıcısı içinde yer almaları gerekir.

AttributeAçıklama
data-idÜrün kimliği.
data-variant-idSeçili varyant kimliği (0 = seçim yok).
data-countMiktar input'unun seçicisi (örneğin #product-count-...).

Kapsayıcı içinde kullanılabilen alt toggle'lar:

Alt toggleAçıklama
data-toggle="product-url"Ürün bağlantısı.
data-toggle="product-title"Ürün başlığı.
data-toggle="price-control"Fiyat alanlarını saran kontrol kapsayıcısı.
data-toggle="price-sell"Satış fiyatı.
data-toggle="price-sell-vat"KDV dahil satış fiyatı.
data-toggle="price-not-discounted"İndirimsiz fiyat.
data-toggle="price-not-discounted-vat"KDV dahil indirimsiz fiyat.
data-toggle="discount-percent"İndirim yüzdesi.
data-toggle="price-numeric1"data-percent ile verilen orana göre hesaplanan özel fiyat alanı.
data-toggle="add-to-cart"Sepete ekle düğmesi.
data-toggle="show-out-stock"Stok yoksa gösterilecek alan.
data-toggle="stock-alarm"Stok uyarısı düğmesi.
data-toggle="price-money-order"Havale fiyatı.
data-toggle="price-money-order-vat"KDV dahil havale fiyatı.
data-toggle="money-discount-percent"Havale indirim yüzdesi.
data-toggle="favourite"Favorilere ekleme düğmesi.
data-toggle="compare"Karşılaştırma düğmesi.
data-toggle="multi-select"Çoklu seçim checkbox'ı (data-callback ile).
data-toggle="product-related-id"İlişkili ürün kimliğini taşıyan gizli input (data-related-id, data-variant-id).
data-toggle="product-card-related"İlişkili ürün kartı kapsayıcısı (data-related-id, data-count).
örnek
<div data-toggle="product" data-id="{{ P.ID }}" data-variant-id="0" data-count="#product-count-{{ P.ID }}{{ BLOCK.ID }}">
    <a href="" data-toggle="product-url"><span data-toggle="product-title">Ürün Başlığı</span></a>
    <div data-toggle="price-control">
        <div data-toggle="price-sell">555</div>
        <div data-toggle="price-sell-vat">555</div>
        <div data-toggle="price-not-discounted">555</div>
        <div data-toggle="price-not-discounted-vat">555</div>
        <div data-toggle="discount-percent">555</div>
        <div data-percent="{{ P.NUMERIC1 }}" data-toggle="price-numeric1">555</div>
        <div data-toggle="add-to-cart">
            <span>{{ t.add_to_cart }}</span>
        </div>
        <div data-toggle="show-out-stock">
            <div data-toggle="stock-alarm">Stok Uyarısı</div>
        </div>
        <span data-toggle="price-control">
            %<span data-toggle="discount-percent">46</span>
        </span>
        <span data-toggle="price-money-order-vat">5555</span>
        <span data-toggle="price-money-order">545</span>
        <span data-toggle="money-discount-percent">544</span>
        <span data-toggle="favourite">Favori</span>
        <span data-url="{{ snippet_uri('product-quick-view', {'include':'product-detail', 'product_id':P.ID }) }}" data-toggle="popup" data-width="768">Hızlı Görünüm</span>
        <span data-toggle="compare">Karşılaştır</span>
        <label for="input-checkbox-{{ P.ID }}">
            <input id="input-checkbox-{{ P.ID }}" type="checkbox" data-callback="multiSelect" data-toggle="multi-select">
            <span>Çoklu Seçim</span>
        </label>
        <input type="hidden" data-related-id="{{ P.RELATED_PRODUCT_ID }}" data-variant-id="{{ P.VARIANT_ID }}" value="0" data-toggle="product-related-id">
        <div data-toggle="product-card-related" data-related-id="1" data-count="{{ PRODUCT_COUNT }}"></div>
    </div>
</div>

data-toggle="sort"

Ürün ve içerik listelemelerinde sıralama değerini değiştirir. [data-toggle="sort"] veya [data-toggle="sort"][data-sort="<key>"] ile tetiklenir. Aktif değer query('sort') ile okunur; seçenekler ALLOWED_SORTS ve SORT_NAMES üzerinden filtrelenip etiketlenir. Değer değiştiğinde URL sorgu parametresi güncellenir ve liste yenilenir.

AttributeAçıklama
data-sortButon kontrolünde uygulanacak sıralama anahtarı.
örnek
<select name="sort" class="form-control min-w-fit capitalize !text-xs !h-9" data-toggle="sort" aria-label="sort options">
    {% for key, S in SORT_NAMES|filter((v, k) => v and k in ALLOWED_SORTS) %}
        <option value="{{ key }}" {% if query('sort')|default('0') == key %} selected {% endif %}>
            {{ S }}
        </option>
    {% endfor %}
</select>
örnek
{% for key, S in SORT_NAMES|filter((v, k) => v and k in ALLOWED_SORTS) %}
    <button data-toggle="sort" data-sort="{{ key }}" class="bg-gray-100 text-gray-600 text-xs rounded-custom [&.active]:bg-gray-600 [&.active]:text-white h-8 px-2 {{ query('sort')|default('0') == key ? 'active' : '' }}">
        {{ S }}
    </button>
{% endfor %}

data-toggle="layout"

Ürün listeleme grid'inin sütun/yerleşim sayısını değiştirir. Aktif değer SELECTED_LAYOUT üzerinden belirlenir; seçim değiştiğinde görünüm güncellenir ve active sınıfı güncel seçimi işaretler.

AttributeAçıklama
data-layoutSeçilecek yerleşim değeri. Grid düzeni için: 1–6, list. Mobil görünüm için: mobile_1–mobile_6. Yaygın masaüstü değerleri ['4', '3', '2'] şeklindedir.
örnek
<span {% if SELECTED_LAYOUT == '4' %}class="active"{% endif %} data-layout="4" data-toggle="layout">
    <svg width="42" height="8" viewBox="0 0 42 8" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M4 0C6.20907 3.68523e-05 8 1.79092 8 4C8 6.20908 6.20907 7.99996 4 8C1.7909 8 0 6.2091 0 4C0 1.7909 1.7909 0 4 0ZM15.2012 0C17.4101 0.000252794 19.2002 1.79105 19.2002 4C19.2002 6.20895 17.4101 7.99975 15.2012 8C12.9921 8 11.2012 6.2091 11.2012 4C11.2012 1.7909 12.9921 0 15.2012 0ZM26.3994 0C28.6084 9.25157e-05 30.3994 1.79096 30.3994 4C30.3994 6.20904 28.6084 7.99991 26.3994 8C24.1903 8 22.3994 6.2091 22.3994 4C22.3994 1.7909 24.1903 0 26.3994 0ZM37.5996 0C39.8087 0 41.5996 1.7909 41.5996 4C41.5996 6.2091 39.8087 8 37.5996 8C35.3907 7.99978 33.5996 6.20897 33.5996 4C33.5996 1.79103 35.3907 0.000218781 37.5996 0Z" fill="currentColor"/>
    </svg>
</span>
örnek
<select name="layout" class="form-control min-w-fit capitalize !text-xs !h-9" data-toggle="layout" aria-label="layout options">
    {% for key in ['4', '3', '2'] %}
        <option value="{{ key }}" {% if SELECTED_LAYOUT == key %} selected {% endif %}>
            {{ key }}
        </option>
    {% endfor %}
</select>

data-toggle="show-in-stock"

Ürün stokta ise içindeki elementleri gösterir.

örnek
<div data-toggle="show-in-stock"></div>

data-toggle="show-out-stock"

Ürün stokta yoksa içindeki elementleri gösterir.

örnek
<div data-toggle="show-out-stock"></div>

data-toggle="qty"

Artırma ve azaltma düğmeleriyle ürün miktarını kontrol eder.

AttributeAçıklama
data-multipleÇoklu seçim izni (true/false).
minMinimum sipariş miktarı.
stepArtış/azalış adımı.
valueVarsayılan değer.
örnek
<div class="qty" data-toggle="qty" data-multiple="true">
    <span class="decrease">-</span>
    <input type="number" id="product-count-{{ P.ID }}{{ BLOCK.ID }}" min="{{ P.MIN_ORDER_COUNT }}" step="{{ P.STOCK_INCREMENT }}" value="{{ P.MIN_ORDER_COUNT }}">
    <span class="increase">+</span>
</div>

data-toggle="variant-one"

Ürün varyantlarını liste olarak gösterir. Her varyant öğesi data-toggle="variant" taşır.

AttributeAçıklama
data-idVaryant türü kimliği.
data-subproduct-idAlt ürün kimliği.
data-pidÜrün kimliği.
data-targetHedef alan.
data-typeVaryant türü.
data-codeVaryant kodu.
data-color-codeRenk kodu.
data-priceVaryant fiyatı.
data-stockStok miktarı.
data-instockStok durumu (true/false).
data-barcodeBarkod.
data-mopHavale indirim oranı.
data-vatKDV oranı.
data-not-discountedİndirimsiz fiyat.
data-wscodeWeb servisi kodu.
data-weightAğırlık.
data-group-idGrup kimliği.
data-callbackİşlem sonrası çağrılacak fonksiyon.
örnek
<div class="w-full" data-toggle="variant-one">
    <div data-id="{{ VARIANT.TYPE_ID }}" data-subproduct-id="{{ VARIANT.ID }}" data-pid="{{ P.ID }}" data-target="{{ P.ID }}{{ BLOCK.ID }}" data-type="{{ VARIANT.TYPE }}" data-code="{{ VARIANT.CODE }}" data-color-code="{{ VARIANT.TYPE_COLOR_CODE }}" data-price="{{ VARIANT.PRICE }}" data-stock="{{ VARIANT.STOCK }}" data-instock="{{ VARIANT.IN_STOCK }}" data-barcode="{{ VARIANT.BARCODE }}" data-mop="{{ VARIANT.MONEY_ORDER_PERCENT }}" data-vat="{{ VARIANT.VAT }}" data-not-discounted="{{ VARIANT.PRICE_NOT_DISCOUNTED }}" data-wscode="{{ VARIANT.WS_CODE }}" data-weight="{{ VARIANT.WEIGHT }}" data-group-id="{{ GRUP_TIP_NO }}" data-toggle="variant" data-callback="variantCallback">Varyant</div>
</div>

data-toggle="variant-two"

Ürün varyantlarını dropdown menü ile seçmeyi sağlar. Desteklenen dataset parametreleri variant-one ile aynıdır.

örnek
<div class="w-full" data-toggle="variant-two">
    <select class="form-control" data-toggle="variant" data-callback="variantCallback">
        <option value="{{ SUB.TYPE_ID }}" data-id="{{ SUB.TYPE_ID }}" data-subproduct-id="{{ SUB.ID }}" data-pid="{{ P.ID }}" data-target="{{ P.ID }}{{ BLOCK.ID }}" data-type="{{ SUB.TYPE }}" data-code="{{ SUB.CODE }}" data-color-code="{{ SUB.TYPE_COLOR_CODE }}" data-price="{{ SUB.PRICE }}" data-stock="{{ SUB.STOCK }}" data-instock="{{ SUB.IN_STOCK }}" data-barcode="{{ SUB.BARCODE }}" data-mop="{{ SUB.MONEY_ORDER_PERCENT }}" data-vat="{{ SUB.VAT }}" data-not-discounted="{{ SUB.PRICE_NOT_DISCOUNTED }}" data-wscode="{{ SUB.WS_CODE }}" data-weight="{{ SUB.WEIGHT }}" class="{% if SUB.TYPE_ID == P.VARIANT_FEATURE2_SELECTED and P.VARIANT_ID > 0 %}active{% endif %} {% if SUB.IN_STOCK == false and NEGATIVE_STOCK == 0 %}passive{% endif %}" {% if SUB.TYPE_ID == P.VARIANT_FEATURE2_SELECTED and P.VARIANT_ID > 0 %}selected{% endif %}>{{ SUB.TYPE }}</option>
    </select>
</div>

data-toggle="variant-notify"

Varyant seçimi gerektiğinde uyarı mesajını gösterir; seçim yapıldığında gizler.

örnek
<div class="hidden" data-toggle="variant-notify">Varyant seçme uyarısı</div>

data-toggle="variant-one-active"

Seçilen varyantın adını gösterir. İkinci varyant boyutu için variant-two-active kullanılır.

örnek
<span data-toggle="variant-one-active">{{ P.VARIANT1_NAME }}</span>
örnek
<span data-toggle="variant-two-active">{{ P.VARIANT2_NAME }}</span>

data-toggle="product-note"

data-toggle="product-note-{{ P.ID }}" biçiminde kullanılır; ürün için kullanıcı notlarını kaydeden bir alan oluşturur.

örnek
<textarea data-toggle="product-note-{{ P.ID }}"></textarea>

data-toggle="product-subscribe"

data-toggle="product-subscribe-{{ P.ID }}" biçiminde kullanılır; ürün için abonelik sıklığı seçmeyi sağlar.

AttributeAçıklama
data-discountAbonelik indirim oranı.
örnek
<select data-discount="{{ P.SUBSCRIBE_DISCOUNT_RATE }}" data-toggle="product-subscribe-{{ P.ID }}">
    <option value="{{ FREQUENCY }}">{{ t[FREQUENCY] }}</option>
</select>

data-toggle="product-multiple"

Çoklu ürün alımlarında (toptan/kademeli) fiyatlandırmayı gösterir. Hesaplanan fiyat, içindeki data-toggle="price-multiple" alanına yazılır.

AttributeAçıklama
data-minMinimum miktar.
data-maxMaksimum miktar.
data-percentİndirim oranı.
data-vatKDV oranı.
örnek
<div data-min="{{ M_D.MIN }}" data-max="{{ M_D.MAX }}" data-percent="{{ M_D.PERCENT }}" data-vat="{{ P.DISPLAY_VAT }}" data-toggle="product-multiple">
    <span data-toggle="price-multiple">452</span>
</div>

data-toggle="product-code"

Ürün kodunu dinamik olarak gösterir; varyant değiştiğinde güncellenir.

AttributeAçıklama
data-codeÜrün kodu.
örnek
<span data-code="{{ P.PRODUCT_CODE }}" data-toggle="product-code">{{ P.PRODUCT_CODE }}</span>

data-toggle="barcode"

Ürün barkodunu dinamik olarak gösterir.

AttributeAçıklama
data-codeBarkod kodu.
örnek
<span data-code="{{ P.BARCODE }}" data-toggle="barcode">{{ P.BARCODE }}</span>

data-toggle="supplier-product-code"

Tedarikçi ürün kodunu dinamik olarak gösterir.

AttributeAçıklama
data-codeTedarikçi ürün kodu.
örnek
<span data-code="{{ P.SUPPLIER_PRODUCT_CODE }}" data-toggle="supplier-product-code">{{ P.SUPPLIER_PRODUCT_CODE }}</span>

data-toggle="product-loader"

Ürünleri belirtilen hedef alana dinamik olarak yükler.

AttributeAçıklama
data-idYükleyici kimliği.
data-targetHedef alanın seçicisi.
data-itemYüklenecek öğelerin seçicisi.
örnek
<div id="catalog-{{ BLOCK.ID }}">
    <div data-toggle="product"></div>
</div>
<input type="hidden" data-id="{{ BLOCK.ID }}" data-target="#catalog-{{ BLOCK.ID }}" data-item="[data-toggle='product']" data-toggle="product-loader">

data-toggle="product-showcase"

Ürün üst/alt vitrininde "daha fazla göster / daha az göster" seçenekleri sunar; içeriği belirtilen yükseklikte kısaltıp düğme ile açıp kapatır.

AttributeAçıklama
data-heightVitrinin yüksekliği (piksel).
data-open-textAçma düğmesi metni.
data-close-textKapatma düğmesi metni.
örnek
<div data-toggle="product-showcase" data-height="150">
    <div data-product-showcase="content">
        <div>{{ SHOWCASE_CONTENT|raw }}</div>
    </div>
    <button data-open-text="{{ t.read_more }}" data-close-text="{{ t.hide }}" data-product-showcase="button">{{ t.read_more }}</button>
</div>

data-toggle="showcase"

Vitrindeki sekmeler arasında geçiş yapmayı sağlar; pasif sekmelerin içeriği data-url üzerinden yüklenir.

AttributeAçıklama
data-urlSekme içeriğinin çekileceği URL.
data-showcase-tabHedef sekme ID'si.
data-showcase-productsYükleme yapılacak ürünlerin kapsayıcısı.
örnek
<div data-toggle="showcase">
    {% for TAB in SETTING.TABS %}
    <button type="button" class="{% if TAB.INDEX == FIRST_TAB.INDEX %}active{% endif %}" {% if TAB.INDEX != FIRST_TAB.INDEX %} data-url="{{ TAB.SHOWCASE.API }}" {% endif %} data-toggle="showcase-button" data-showcase-tab="#showcase-{{ BLOCK.ID }}{{ TAB.INDEX }}" {% if not TAB.TITLE %} aria-label="showcase-button" {% endif %}>{{ TAB.TITLE }}</button>
    {% endfor %}
</div>

{% for key, TAB in SETTING.TABS %}
    {% if TAB.INDEX != FIRST_TAB.INDEX %}
        <div id="showcase-{{ BLOCK.ID }}{{ TAB.INDEX }}">
            <div>
                <template data-showcase-products></template>
            </div>
        </div>
    {% endif %}
{% endfor %}

data-toggle="collection"

Kullanıcının favori koleksiyonlarını gösterir.

örnek
<span data-toggle="collection">Favori Koleksiyon</span>

data-toggle="product-card-catalog"

Ürün kartlarını katalog görünümünde düzenler.

AttributeAçıklama
data-productÜrün kimliği.
data-modelModel kimliği.
örnek
<div data-product="{{ P.ID }}" data-model="{{ P.MODEL_ID }}" data-toggle="product-card-catalog">
    <input type="hidden" data-toggle="is-catalog-active" value="1">
</div>

Tıklama ile resim veya videoyu tam ekran galeri modunda açar. Video desteği için bağlantı alanına video URL'si verilmelidir.

örnek
<div data-toggle="light-gallery">
    <a href="{{ X.URL }}">
        <img src="{{ X.PATH }}" width="100" height="100">
    </a>
</div>

<div data-toggle="light-gallery">
    <div class="gallery-selector" data-src='{{ IMAGE.DATA1 }}'>
        open video
    </div>
</div>

data-toggle="zoom"

Ürün görsellerine fare ile üzerine gelindiğinde yakınlaştırma efekti ekler. Genellikle product-slider, product-gallery ve product-thumb-slider yapısı içinde kullanılır.

AttributeAçıklama
data-scrollKaydırma ile yakınlaştırma (1/0).
data-imageYakınlaştırılacak görselin URL'si.
örnek
<div data-toggle="product-slider">
    <div class="swiper">
        <div class="swiper-wrapper" data-toggle="product-gallery">
            <a class="swiper-slide aspect-product" href="{{ IMAGE.BIG }}" data-id="{{ IMAGE.VARIANT_TYPE_ID }}" data-toggle="product-image">
                <picture>
                    <img data-toggle="zoom" data-scroll="1" data-image="{{ IMAGE.BIG }}">
                </picture>
            </a>
        </div>
    </div>
    <div data-toggle="product-thumb-slider" data-direction="horizontal">
        <div class="swiper">
            <div class="swiper-wrapper">
                {% for IMAGE in P.IMAGE_LIST %}
                <div class="swiper-slide product-images-item group" data-id="{{ IMAGE.VARIANT_TYPE_ID }}" data-toggle="product-image">
                    <picture class="aspect-product">
                        <img src="{{ IMAGE.SMALL }}">
                    </picture>
                </div>
                {% endfor %}
            </div>
        </div>
    </div>
</div>

Sepet, Üye & Site

Giriş, kayıt, sepet önizleme, dil/para birimi ve canlı arama bileşenleri.

data-toggle="login"

Kullanıcı giriş formunu yönetir; formu otomatik olarak işler ve fetch isteklerini gerçekleştirir.

AttributeAçıklama
data-callbackİşlem sonrası çağrılacak fonksiyon.
örnek
<form method="POST" novalidate autocomplete="off" data-toggle="login" data-callback=""></form>

data-toggle="fast-register"

Hızlı kayıt formunu yönetir; kayıt işlemleri için otomatik fetch isteklerini gerçekleştirir.

AttributeAçıklama
data-callbackİşlem sonrası çağrılacak fonksiyon.
örnek
<form method="POST" novalidate autocomplete="off" data-toggle="fast-register" data-callback=""></form>

data-toggle="social-login"

Sosyal medya platformları üzerinden giriş yapmayı sağlar.

AttributeAçıklama
data-platformKullanılacak platform (google, facebook, apple).
örnek
<span data-toggle="social-login" data-platform="google">Google ile Giriş</span>
<span data-toggle="social-login" data-platform="facebook">Facebook ile Giriş</span>
<span data-toggle="social-login" data-platform="apple">Apple ile Giriş</span>

data-toggle="logout"

Tıklama ile kullanıcıyı sistemden çıkarır.

örnek
<button type="button" data-toggle="logout">{{ t.logout }}</button>

data-toggle="newsletter"

Bülten (site aboneliği) formunu yönetir; form verilerini otomatik olarak gönderir.

örnek
<form novalidate autocomplete="off" data-toggle="newsletter"></form>

data-toggle="member-name"

Giriş yapmış kullanıcının adını gösterir.

örnek
<div data-toggle="member-name"></div>

data-toggle="message-count"

Kullanıcının okunmamış mesaj sayısını gösterir.

örnek
<span data-toggle="message-count"></span>

data-toggle="favourite-count"

Kullanıcının favori ürün sayısını dinamik olarak gösterir.

örnek
<span data-toggle="favourite-count"></span>

data-toggle="cart-count"

Sepetteki ürün sayısını dinamik olarak gösterir.

örnek
<span data-toggle="cart-count"></span>

data-toggle="cart-price"

Sepetin toplam tutarını dinamik olarak gösterir.

örnek
<span data-toggle="cart-price"></span>

data-toggle="cart-preview"

Sepet içeriğini bir önizleme penceresinde gösterir.

AttributeAçıklama
data-urlSepet önizleme içeriğinin çekileceği URL.
örnek
<a href="{{ url(30,'page') }}" data-url="{{ snippet_uri('cart-preview', {'include':'cart'}) }}" data-toggle="cart-preview"></a>

data-toggle="cart-drawer"

Sepet içeriğini yanda açılan bir drawer'da gösterir.

AttributeAçıklama
data-urlSepet önizleme içeriğinin çekileceği URL.
örnek
<a data-url="{{ snippet_uri('cart-drawer', {'include':'cart'}) }}" data-toggle="cart-drawer"></a>

data-toggle="language"

Kullanıcıların site dilini değiştirmesini sağlar.

AttributeAçıklama
data-languageDil kodu.
örnek
{% for LANG in LANGUAGE_LIST %}
    <div class="{% if LANGUAGE == LANG.CODE %}active text-primary font-bold {% else %} hover:underline {% endif %}" data-language="{{ LANG.CODE }}" data-toggle="language">
        {{ LANG.TITLE }}
    </div>
{% endfor %}
örnek
<select id="language-mobile-{{ BLOCK.ID }}" class="form-control" data-toggle="language" data-placeholder>
    {% for LANG in LANGUAGE_LIST %}
        <option {% if LANGUAGE == LANG.CODE %} selected {% endif %} value="{{ LANG.CODE }}">
            {{ LANG.TITLE }}
        </option>
    {% endfor %}
</select>

data-toggle="currency"

Kullanıcıların para birimini değiştirmesini sağlar.

AttributeAçıklama
data-currencyPara birimi kodu.
örnek
{% for CURRENCY in CURRENCY_LIST %}
    <span class="{% if CURRENCY.SELECTED %}active text-primary font-bold {% else %} hover:underline {% endif %}" data-currency="{{ CURRENCY.TITLE }}" data-toggle="currency">{{ CURRENCY.TITLE }}</span>
{% endfor %}
örnek
<select class="form-control" data-toggle="currency" data-placeholder>
    {% for CURRENCY in CURRENCY_LIST %}
        <option {% if CURRENCY.SELECTED %} selected {% endif %} value="{{ CURRENCY.TITLE }}">
            {{ CURRENCY.TITLE }}
        </option>
    {% endfor %}
</select>

Canlı arama formu oluşturur; kullanıcı yazdıkça arama sonuçlarını dinamik olarak gösterir. Arama sonuçları snippet('header.live-search.default') ile görüntülenir.

AttributeAçıklama
data-licenceArama lisansı.
örnek
<form action="{{ url(12,'page') }}" method="get" autocomplete="off" data-licence="{{ LICENCE_SEARCH_ALL }}" data-toggle="live-search">
    <div class="w-full relative">
        <input type="search" name="q" v-model="input" @click="update()">
        <button type="submit">Ara</button>
    </div>
    {% if IS_INLINE_SEARCH_ACTIVE %}
        {{ snippet('header.live-search.default') }}
    {% endif %}
</form>

Sonraki adımlar