Ana içeriğe geç

Giriş

Kodla oynamadan içeriğiniz için özel alanlar tanımlayın.

🎯 Bu modül ne yapar?

AttributesSets modülü, içeriğiniz (ürünler, sayfalar, formlar vb.) için özel alanlar kullanmanıza olanak tanır; bunları uygulamanıza sabit kodlamadan.

Bunu verileriniz için bir form oluşturucu olarak düşünün - hangi alanlara ihtiyacınız olduğunu tanımlarsınız ve OneEntry geri kalanını halleder.

📖 Basit Açıklama

Bir çevrimiçi mağaza kurduğunuzu hayal edin. Her ürünün ihtiyacı var:

  • İsim (metin).
  • Fiyat (sayı).
  • Resim (görüntü).
  • Açıklama (uzun metin).
  • Kategori (açılır liste).

Bu alanları uygulamanızda sabit kodlamak yerine, Attributes kullanarak OneEntry yönetim panelinde tanımlarsınız. Sonra:

  • İstediğiniz zaman yeni alanlar ekleyebilirsiniz (kod değişikliği yok!).
  • Farklı içerik türleri arasında alanları yeniden kullanabilirsiniz.
  • Yeniden dağıtım yapmadan alan türlerini değiştirebilirsiniz.
  • Tüm içerik yapısını tek bir yerden yönetebilirsiniz.

Gerçek dünya örneği:

Attributes olmadan (sabit kodlanmış):
- Kod: const product = { name: 'Ürün adı', price: 150, image: '', description: '' }
- "renk" alanını eklemek için → Kodu değiştir, yeniden dağıt, bekle.

Attributes ile (dinamik):
- Kod: const { name, price, image, description } = product
- Yönetim paneli: "renk" niteliğini ekle.
- Kod otomatik olarak yeni alanı içerir.
- Kod: const { name, price, image, description, color } = product
- Yeniden dağıtım gerekmez!

✨ Temel Kavramlar

Nedir bir Attribute?

Bir attribute, veri saklayan tek bir alandır.

Örnekler:

  • Ürün adı (dize).
  • Ürün fiyatı (ondalık).
  • Ürün resmi (görüntü).
  • Yayın tarihi (tarih).

Nedir bir Attribute Set?

Bir attribute set, bir yapıyı tanımlayan attribute'ların bir koleksiyonudur.

Örnek: Ürün Attribute Set'i

- name (dize)
- price (ondalık)
- description (metin)
- images (resim grubu)
- category (liste)
- inStock (tam sayı)

Neden Attribute Set'leri Kullanmalısınız?

❌ Attributes Olmadan✅ Attributes ile
Sabit kodlanmış alanlarDinamik alanlar
Kod değişiklikleri gerekliYönetim panelinde düzenleme
Yeniden dağıtım gerekliCanlı güncellemeler
Katı yapıEsnek yapı
Tekrar eden kodYeniden kullanılabilir setler

📋 Bilmeniz Gerekenler

Üç Önemli Terim

TerimNedirÖrnek
MarkerBenzersiz kod tanımlayıcı"product_name"
TypeHangi tür veriyi saklar"string", "integer", "image"
ValueAttribute değeri"Ürün Adı"

Marker'lar hakkında önemli bilgiler:

  • Benzersiz olmalıdır
  • Boşluk olmamalıdır (yerine _ kullanın)
  • Bir sayı ile başlayamaz
  • Tutarlılık için küçük harf kullanın

Örnekler:

  • ✅ İyi: product_name, price_usd, main_image
  • ❌ Kötü: product name, 2nd_price, Product Name

📚 Mevcut Veri Türleri

Attributes farklı türde verileri saklayabilir. Her alan için doğru türü seçin.

Hızlı Referans Tablosu

TürEn İyi KullanımÖrnek Kullanım
stringKısa metinÜrün adı, e-posta
textUzun formatlı metinBlog yazısı, açıklama
textWithHeaderBaşlıklı metinMakale bölümleri
integerTam sayılarMiktar, yaş
realYüksek hassasiyetli ondalıklarBilimsel veriler
floatOndalık sayılarFiyat, puan
dateSadece tarihDoğum tarihi, son tarih
dateTimeTarih + saatEtkinlik başlangıcı, yayın tarihi
timeSadece saatAçılış saatleri
fileHerhangi bir dosyaPDF, belge
imageTek resimAvatar, logo
groupOfImagesBirden fazla resimFotoğraf galerisi
radioButtonTek seçimBeden (S/M/L)
listAçılır seçimÜlke, kategori
entityDiğer içeriğe bağlantıİlgili ürünler
timeIntervalTarih aralığıPromosyon süresi
jsonÖzel yapılandırılmış veriAPI yanıtı

🔍 Veri Türlerinin Ayrıntılı Açıklamaları

Metin Türleri

Ne zaman neyi kullanmalısınız:

  • string - Tek satır, 255 karakterden az (isim, e-posta, başlık)
  • text - Birden fazla paragraf, biçimlendirmeyi destekler (makaleler, açıklamalar)
  • textWithHeader - Başlık gerektiren metin (blog bölümleri, SSS)

Sayı Türleri

Ne zaman neyi kullanmalısınız:

  • integer - Ondalık gerektirmeyen sayılar (yaş, miktar, görüntüleme)
  • float - Standart ondalık sayılar (fiyat $19.99, puan 4.5)
  • real - Ekstra hassasiyet gerektiren sayılar (bilimsel hesaplamalar)

Tarih/Saat Türleri

Ne zaman neyi kullanmalısınız:

  • date - Sadece gün (doğum günü, son tarih)
  • time - Sadece saat (iş saatleri, randevu saati)
  • dateTime - Her ikisi de gerekli (etkinlik başlangıcı, makale yayınlandı)
  • timeInterval - Tarihler arasındaki dönem (indirim süresi, tatil tarihleri)

Dosya ve Resim Türleri

Ne zaman neyi kullanmalısınız:

  • file - Herhangi bir belge (PDF, DOC, ZIP)
  • image - Tek resim (ürün fotoğrafı, avatar)
  • groupOfImages - Birden fazla resim (galeri, ürün resimleri)

Seçim Türleri

Ne zaman neyi kullanmalısınız:

  • radioButton - Yalnızca BİR seçeneği seçin (Evet/Hayır, Beden S/M/L)
  • list - Seçeneklerle açılır menü (Ülke, Kategori)

Gelişmiş Türler

  • entity - Diğer sayfalara/ürünlere bağlantı (İlgili Öğeler, Kategoriler)
  • json - Karmaşık veri yapıları saklamak için (API yanıtları, ayarlar)

📖 Veri Türü Örnekleri

Aşağıda her veri türünün yapısına dair teknik örnekler bulunmaktadır.

💡Attribute set'inde dönen veri, gerçek attribute değerlerini içermez; bu değerler sayfalar, ürünler gibi belirli varlıklar içinde yer alır. Tek istisna, timeInterval attribute türüdür. Bu attribute, admin paneli'deki ilgili kutucuğu işaretleyerek değerler alabilir.

Tüm veri türü örneklerini görmek için tıklayın

Veri Türleri Referansı

Veri türleri aşağıdaki türlerde olabilir:

  • String: Basit metin, örneğin, "Merhaba, dünya!".

Örnek:

{
"type": "string",
"value": {},
"marker": "string",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "String"
},
"additionalFields": [
{
"type": "integer",
"value": "10",
"marker": "Extra"
}
]
}

  • Text: Daha uzun metin, genellikle biçimlendirilmiş, örneğin, bir makale veya mektup.

Örnek:

{
"type": "text",
"value": {},
"marker": "text",
"position": 2,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Text"
},
"additionalFields": []
}

  • Text with Header: Bir konuyu veya kategoriyi belirtmek için kullanılabilecek başlıklı metin.

Örnek:

{
"type": "textWithHeader",
"value": {},
"marker": "text_with_header",
"position": 3,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Text With Header"
},
"additionalFields": []
}

  • Integer: Bir tam sayı, örneğin, 5, 100, -2.

Örnek:

{
"type": "integer",
"value": {},
"marker": "integer",
"position": 4,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Integer"
},
"additionalFields": []
}

  • Real: Float ile aynı, ancak daha yüksek hassasiyetle.

Örnek:

{
"type": "real",
"value": {},
"marker": "real_number",
"position": 5,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Real Number"
},
"additionalFields": []
}

  • Float: Ondalık kısmı olabilen kayan nokta sayıları için bir veri türü, örneğin, 3.14, 1.5, -0.25.

Örnek:

{
"type": "float",
"value": {},
"marker": "float",
"position": 6,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Float"
},
"additionalFields": []
}

  • Date and Time: Tarih ve saat kombinasyonu, örneğin, 2023-10-27 10:00:00.

Örnek:

{
"type": "dateTime",
"value": {},
"marker": "date_time",
"position": 7,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "DateTime"
},
"additionalFields": []
}

  • Date: Bir tarih, örneğin, 2023-10-27.

Örnek:

{
"type": "date",
"value": {},
"marker": "date",
"position": 8,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Date"
},
"additionalFields": []
}

  • Time: Bir saat, örneğin, 10:00:00.

Örnek:

{
"type": "date",
"value": {},
"marker": "date",
"position": 8,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Date"
},
"additionalFields": []
}

  • File: Bilgisayarınızdaki herhangi bir dosya, örneğin, bir belge, resim, müzik.

Örnek:

{
"type": "file",
"value": {},
"marker": "file",
"position": 10,
"listTitles": [],
"validators": {
"checkingFilesValidator": {
"maxUnits": "kb",
"maxValue": "2000",
"minUnits": "kb",
"minValue": 0,
"extensions": []
}
},
"localizeInfos": {
"title": "File"
},
"additionalFields": []
}

  • Image: Bir resim, örneğin, bir fotoğraf, çizim.

Örnek:

{
"type": "image",
"value": {},
"marker": "image",
"position": 11,
"listTitles": [],
"validators": {
"sizeInPixelsValidator": {
"maxX": "500",
"maxY": "500"
}
},
"localizeInfos": {
"title": "Image"
},
"additionalFields": []
}

  • Group of Images: Bir resim koleksiyonu, örneğin, bir fotoğraf albümü.

Örnek:

{
"type": "groupOfImages",
"value": {},
"marker": "image_group",
"position": 12,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Image Group"
},
"additionalFields": []
}

  • Radio Button: Yalnızca bir seçeneğin seçilebileceği bir seçim butonu.

Örnek:

{
"type": "radioButton",
"value": {},
"marker": "radio",
"position": 13,
"listTitles": [
{
"title": "A",
"value": "a",
"extended": {
"type": null,
"value": null
},
"position": 1
},
{
"title": "B",
"value": "b",
"extended": {
"type": null,
"value": null
},
"position": 2
}
],
"validators": {},
"localizeInfos": {
"title": "Radio"
},
"additionalFields": []
}

  • List: Ögelerin bir listesi, örneğin, bir alışveriş listesi.

Örnek:

{
"type": "list",
"value": {},
"marker": "list",
"position": 14,
"listTitles": [
{
"title": "A",
"value": "a",
"extended": {
"type": null,
"value": null
},
"position": 1
},
{
"title": "B",
"value": "b",
"extended": {
"type": null,
"value": null
},
"position": 2
},
{
"title": "C",
"value": "c",
"extended": {
"type": "string",
"value": "Ek Değer"
},
"position": 3
}
],
"validators": {},
"localizeInfos": {
"title": "List"
},
"additionalFields": []
}

  • Entity: Bir nesneyi temsil eden bir varlık.

Örnek:

{
"type": "entity",
"value": {},
"marker": "entity",
"position": 15,
"listTitles": [
{
"title": "Ürünler",
"value": {
"id": 1,
"depth": 0,
"parentId": null,
"position": 1,
"selected": true
}
},
{
"title": "Normal Sayfa",
"value": {
"id": 4,
"depth": 0,
"parentId": null,
"position": 2,
"selected": true
}
},
{
"title": "Hata",
"value": {
"id": 2,
"depth": 0,
"parentId": null,
"position": 3,
"selected": true
}
}
],
"validators": {},
"localizeInfos": {
"title": "Entity"
},
"additionalFields": [
{
"type": "string",
"value": "Test Field",
"marker": "test_field"
}
]
}

  • Time interval: Zaman aralığı verilerini yönetmek için kullanıcı dostu bir arayüze sahip esnek bir takvim.

Örnek:

{
"time_interval": {
"id": 4,
"type": "timeInterval",
"value": [
// Belirli bir aralığa bağlı her bir değer grubunun dizisi (intervalId aracılığıyla). Bu dizi, CMS'de Değerleri Al özelliği etkinleştirildiğinde oluşur.
{
// Belirli tarihlere uygulanabilir zaman kayıtları
"values": [
{
// Benzersiz kayıt tanımlayıcı
"id": "1dc1787d-acc3-4315-a45d-52166c72e577",
// Bu kaydın geçerli olduğu tarih aralığı (dahil)
"dates": ["2025-11-27T00:00:00.000Z", "2025-11-27T00:00:00.000Z"],
// [[başlangıç, bitiş], ...] formatında zaman dilimleri dizisi
"times": [
[
// Zaman diliminin başlangıcı (saat ve dakika)
{
"hours": 19,
"minutes": 18
},
// Zaman diliminin bitişi
{
"hours": 21,
"minutes": 19
}
]
],
// Ayrılmış (mevcut uygulamada kullanılmıyor)
"intervals": [],
// Belirli tarihte programdan hariç tutulan zaman dilimleri
"exceptions": [
{
// İstisna tarihi
"date": "2025-12-17T17:00:00.000Z",
// Hariç tutulan zaman dilimlerinin dizisi
"externalTimes": [
["2025-12-17T17:25:00.000Z", "2025-12-17T17:27:00.000Z"]
]
}
],
// `intervals` dizisinden aralığa referans
"intervalId": "0da61a19-49cb-40b1-88e6-1fa3c93a1fa6",
// Haftalık tekrar için bayrak (ilgili haftanın günü)
"inEveryWeek": true
},
{
"id": "cfa187d3-0284-4e0d-8206-7b353cf47110",
"dates": ["2025-12-18T00:00:00.000Z", "2025-12-18T00:00:00.000Z"],
// [[başlangıç, bitiş], ...] formatında zaman dilimleri dizisi
"times": [
[
{
"hours": 0,
"minutes": 25
},
{
"hours": 0,
"minutes": 27
}
],
[
{
"hours": 19,
"minutes": 18
},
{
"hours": 21,
"minutes": 19
}
]
],
"intervals": [],
"exceptions": [
{
"date": "2025-12-17T17:00:00.000Z",
"externalTimes": [
["2025-12-17T17:25:00.000Z", "2025-12-17T17:27:00.000Z"]
]
}
],
"intervalId": "0da61a19-49cb-40b1-88e6-1fa3c93a1fa6"
},
{
"id": "474de0f7-595f-49a5-aaa7-65617203ae69",
"dates": ["2025-12-25T00:00:00.000Z", "2025-12-25T00:00:00.000Z"],
// Zaman dilimi yok
"times": [],
// Takvim genişletme için dinamik kurallar
"external": [
{
// Tekrarlayan etkinlik için temel tarih
"date": "2026-01-15T00:00:00.000Z",
// Etkinlik bu günde her ay tekrarlanır
"inEveryMonth": true
}
],
"intervals": [],
"exceptions": [
{
"date": "2025-12-17T17:00:00.000Z",
"externalTimes": [
["2025-12-17T17:25:00.000Z", "2025-12-17T17:27:00.000Z"]
]
}
],
"intervalId": "0da61a19-49cb-40b1-88e6-1fa3c93a1fa6",
// Haftalık tekrar için bayrak
"inEveryWeek": true,
// Aylık tekrar için bayrak
"inEveryMonth": true,
// Yıllık tekrar için bayrak
"inEveryYears": true
}
],
// `intervals` dizisinden aralığa referans
"intervalId": "0da61a19-49cb-40b1-88e6-1fa3c93a1fa6"
},
{
"values": [
{
"id": "2f80dc18-16da-45cb-82c6-e41e1f6ee084",
"dates": ["2025-12-22T00:00:00.000Z", "2025-12-23T00:00:00.000Z"],
"times": [],
"intervals": [],
"exceptions": [],
"intervalId": "918175fd-cc18-4ca5-9bee-c78c61c9415a",
"inEveryWeek": true,
"inEveryMonth": true
}
],
"intervalId": "918175fd-cc18-4ca5-9bee-c78c61c9415a"
}
],
"isPrice": false,
"original": true,
"intervals": [
// Zaman aralığı şablonlarının dizisi
{
// Aralık şablonunun benzersiz tanımlayıcısı
"id": "0da61a19-49cb-40b1-88e6-1fa3c93a1fa6",
"range": [
// Aralığın geçerlilik ana aralığı
"2025-11-26T17:00:00.000Z",
"2025-11-26T17:00:00.000Z"
],
// Tüm aralık düzeyinde istisnalar
"external": [
{
"date": "2025-12-17T17:00:00.000Z",
"externalTimes": [
["2025-12-17T17:25:00.000Z", "2025-12-17T17:27:00.000Z"]
]
}
],
// Dahili zaman dilimleri (çalışma/aktif dönemler)
"intervals": [
{
"id": "01fea594-9933-47ac-af0a-ec0e0884f618",
// Zaman diliminin bitişi
"end": {
"hours": 21,
"minutes": 19
},
// Zaman diliminin başlangıcı
"start": {
"hours": 19,
"minutes": 18
},
// Tekrarlayan blok süresi (dakika cinsinden); null — periyodiklik yok
"period": null
},
{
"id": "22ba24af-1fae-4422-8c92-0635b684a306",
"end": {
"hours": 0,
"minutes": 29
},
"start": {
"hours": 0,
"minutes": 25
},
// Periyodiklik: zaman dilimleri 2 dakikalık adımlarla tekrarlanır
"period": 2,
// Periyodik dilim içinde istisna
"external": {
// Arayüzde istisnanın gösterilmesi için bayrak
"show": false,
// Hariç tutulan parçanın süresi (dakika cinsinden)
"value": 2
}
}
],
"inEveryWeek": true,
"inEveryMonth": true,
"inEveryYears": true
},
{
"id": "918175fd-cc18-4ca5-9bee-c78c61c9415a",
"range": ["2026-01-18T17:00:00.000Z", "2026-01-20T17:00:00.000Z"],
// İstisna yok
"external": [],
// Dahili zaman dilimi yok
"intervals": [],
"inEveryWeek": true,
"inEveryMonth": true,
"inEveryYears": true
}
],
// Arayüzde attribute görünürlüğü için bayrak
"isVisible": true,
"identifier": "time_interval",
"localizeInfos": {
"en_US": {
"title": "Time interval"
}
},
"receiveValues": true
}
}

  • JSON: JSON formatında bazı veriler.

Örnek:

{
"type": "json",
"value": {},
"marker": "json",
"position": 17,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "Json"
},
"additionalFields": []
}

İçerik doldurma arayüzü, her attribute alanı için seçilen veri türüne karşılık gelecektir.


💡 Önemli Notlar

Validator'lar

Veri kalitesini sağlamak için attribute'lar için validator'lar ekleyebilirsiniz:

  • Gerekli alanlar.
  • Metin için min/max uzunluk.
  • Yüklemeler için dosya boyutu sınırları.
  • Resimler için piksel boyutları.
  • Tarih aralıkları.
Validator örneklerini görmek için tıklayın
  • requiredValidator: Bir değer girilmesini gerektirir.

Örnek:

{
"type": "string",
"value": {},
"marker": "string",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "Currency"
},
"additionalFields": [
{
"type": "integer",
"value": "10",
"marker": "extra"
}
]
}

  • defaultValueValidator:

Örnek:

{
"type": "string",
"value": {},
"marker": "string",
"position": 1,
"listTitles": [],
"validators": {
"defaultValueValidator": {
"customErrorText": "Özel hata",
"fieldDefaultValue": "usd",
"fieldDefaultValue2": "",
},
},
"localizeInfos": {
"title": "String"
},
"additionalFields": [
{
"type": "integer",
"value": "10",
"marker": "extra"
}
]
}

Daha fazla bilgi edinin: Ayrıntılı yapılandırma için Validator'lar bölümüne bakın.

Paylaşılan Attribute Set'leri

⚠️ Önemli: Bir attribute set'i birden fazla varlık tarafından kullanılıyorsa, değişiklik yaparken dikkatli olun:

Bir attribute eklemek:

  • Set'i kullanan tüm varlıklara eklenecektir.
  • Mevcut içerik değişmeyecektir.
  • Yeni alan mevcut öğeler için boş kalacaktır.

Bir attribute kaldırmak:

  • Set'i kullanan tüm varlıklardan kaldırılacaktır.
  • Mevcut değerler kalıcı olarak silinecektir.

Örnek:

"Ürün Bilgisi" attribute set'i tarafından kullanılıyor:
- Fiziksel Ürünler
- Dijital Ürünler
- Hizmetler

"weight" attribute'unu eklemek → ÜÇÜNE DE EKLENDİ!
"weight" attribute'unu kaldırmak → ÜÇÜNDEN DE KALDIRILDI! ⚠️

📊 Hızlı Referans Tablosu - Yaygın Yöntemler

YöntemNe Yapar
getAttributes()Tüm attribute set nesnelerini alır.
getAttributesByMarker()Attribute set'ten verilerle birlikte tüm attribute'ları marker ile alır.
getAttributeSetByMarker()Marker ile bir attribute set nesnesini alır.
getSingleAttributeByMarkerSet()Attribute set'ten verilerle birlikte bir attribute alır.

❓ Sıkça Sorulan Sorular (SSS)

string ile text arasındaki fark nedir?

  • string - Kısa metin, tek satır (maks. ~255 karakter). İsimler, başlıklar, e-postalar için kullanın.
  • text - Uzun metin, birden fazla paragraf, biçimlendirme ve HTML'yi destekler. Açıklamalar, makaleler için kullanın.

Ne zaman integer yerine float kullanmalıyım?

  • integer - Sadece tam sayılar: 1, 2, 100, -5. Miktarlar, sayımlar, yaşlar için kullanın.
  • float - Ondalık sayılar: 19.99, 4.5, -0.25. Fiyatlar, puanlar, ölçümler için kullanın.
  • real - Float gibi ama daha yüksek hassasiyet. Bilimsel hesaplamalar için kullanın.

En iyi uygulama: İçerik eklemeden önce attribute türlerinizi planlayın.


Bir attribute'u silersem ne olur?

  • Bir attribute set'inde kullanılıyorsa, bir attribute'u silemezsiniz.

Aynı attribute'u farklı attribute set'lerinde yeniden kullanabilir miyim?

Hayır, her attribute bir attribute set'ine aittir. Ancak:

  • Farklı marker'larla benzer attribute'lar oluşturabilirsiniz.
  • Tüm attribute set'lerini birden fazla varlıkta yeniden kullanabilirsiniz.

"Marker" nedir ve neden önemlidir?

Marker, kodda kullandığınız teknik tanımlayıcıdır:

// Kodunuzda:
product.attributeValues.product_name // ← "product_name" marker'dır

// VS yönetimde görünen isim:
"Ürün Adı" // ← Bu sadece insanlar içindir

Marker'lar için kurallar:

  • Benzersiz olmalıdır
  • Boşluk olmamalıdır (yerine _ kullanın)
  • Sayılarla başlayamaz
  • Küçük harf kullanın
  • Açıklayıcı isimler seçin

Verilerim için hangi türü kullanacağımı nasıl bilirim?

Kendinize sorun:

  1. Metin mi?

    • Kısa (< 255 karakter)? → string
    • Biçimlendirilmiş uzun mu? → text
    • Başlık gerektiriyor mu? → textWithHeader
  2. Sayı mı?

    • Ondalık yok mu? → integer
    • Ondalık var mı? → float
    • Bilimsel hassasiyet mi? → real
  3. Seçim mi?

    • Bir seçenek mi seçilecek? → radioButton
    • Açılır menü mü? → list
  4. Dosya mı?

    • Resim mi? → image veya groupOfImages
    • Belge mi? → file
  5. Tarih mi?

    • Sadece tarih mi? → date
    • Tarih + saat mi? → dateTime
    • Zaman aralığı mı? → timeInterval

İç içe attribute'lar (attribute içinde attribute) olabilir mi?

Evet, Ek Alanlar kullanabilirsiniz.


Doğrulama kurallarını nasıl eklerim?

OneEntry yönetim panelinde:

  1. Attribute set'inize gidin
  2. Bir attribute'a tıklayın
  3. Doğrulayıcılar ekleyin (gerekli, min/max, regex, vb.)
  4. Değişiklikleri kaydedin

Daha fazla bilgi edinin: Ayrıntılı yapılandırma için Validator'lar bölümüne bakın.


🎓 En İyi Uygulamalar

  • Açıklayıcı marker'lar kullanın (product_price değil pp)
  • İçerik eklemeden önce attribute türlerini planlayın
  • Mümkünse attribute set'lerini yeniden kullanın
  • Veri kalitesini sağlamak için doğrulayıcılar ekleyin
  • Her attribute'un ne için olduğunu belgeleyin

Modülün kullanıcı arayüzü hakkında daha fazla bilgi https://doc.oneentry.cloud/docs/attributes/introduction

AttributesSets modülünün tanımı


const { AttributesSets } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);


🔗 İlgili Belgeler