Giriş
🎯 Bu modül ne yapar?
GeneralTypes modülü, OneEntry'deki içeriğinizin yapısını ve kategorilerini tanımlayan sistem genelindeki varlık türlerini - sayfa türleri, form türleri, ürün blok türleri ve daha fazlasını - almanıza olanak tanır.
Bunu içeriğinizin sınıflandırma sistemi olarak düşünün - OneEntry, farklı türdeki sayfaları (anasayfa, blog yazısı, ürün sayfası), formları (iletişim, anket), blokları (kahraman, galeri) ve ürünleri (fiziksel, dijital) düzenlemek için türleri kullanır ve bu modül, dinamik arayüzler oluşturmak için mevcut tüm türleri almanıza olanak tanır.
📖 Basit Açıklama
OneEntry'de, her varlığın bir türü vardır ve bu tür, amacını ve yapısını belirler:
- Sayfa Türleri:
homepage,blog_post,product_page,landing_page - Form Türleri:
contact_form,survey,registration,feedback - Ürün Blok Türleri:
hero_section,image_gallery,text_block,video_embed - Ürün Türleri:
physical_product,digital_product,service,subscription
GeneralTypes modülü, OneEntry projenizde yapılandırılmış tüm türlerin tam listesini sağlar, böylece:
✅ Dinamik açılır menüler oluşturun - İçerik oluştururken yöneticilerin sayfa türünü seçmesine izin verin
✅ İçeriği filtreleyin - Sadece "blog_post" sayfalarını veya "contact_form" formlarını gösterin
✅ Verileri doğrulayın - Bir varlık oluşturmadan önce bir türün var olup olmadığını kontrol edin
✅ Tür tabanlı mantık oluşturun - Sayfa türüne göre farklı kullanıcı arayüzleri gösterin
Gerçek dünya örneği:
Blog uygulamanız tüm sayfa türlerini alır:
- "homepage" → Öne çıkan gönderiler kaydırıcısını render eder
- "blog_post" → Yorumlarla birlikte makale düzenini render eder
- "about_page" → Ekip üyesi kartlarını render eder
- "contact_page" → İletişim formunu render eder
✨ Temel Kavramlar
Tür Sistemi Hiyerarşisi
OneEntry, her varlığın bir kategoriye ait olduğu bir tür sistemi kullanarak içeriği organize eder:
| Varlık | Örnek Türler | Amaç |
|---|---|---|
| Sayfalar | homepage, blog_post, product_page, landing_page | Sayfa düzenlerini ve işlevselliğini tanımlar |
| Formlar | contact_form, survey, registration, feedback | Farklı form amaçlarını kategorize eder |
| Ürün Blokları | hero_section, gallery, text_block, video_embed | Ürün sayfaları için yapı taşları |
| Ürünler | physical_product, digital_product, service, subscription | Ürün envanterini sınıflandırır |
Tür Varlık Yapısı
GeneralTypes.getAllTypes() tarafından döndürülen her tür bu yapıya sahiptir:
interface GeneralTypeEntity {
id: number; // Benzersiz sayısal ID (örneğin, 1, 2, 3)
type: string; // Tür adı (örneğin, "blog_post", "contact_form")
}
GeneralTypes Ne Zaman Kullanılır
| Kullanım Durumu | Neden GeneralTypes? |
|---|---|
| CMS yönetici arayüzü oluşturma | Mevcut türlerle açılır menüleri doldurma |
| Tür filtreleri oluşturma | Kullanıcıların içeriği türüne göre filtrelemesine izin verme (blog yazıları vs. açılış sayfaları) |
| Varlık oluşturma doğrulama | Bir sayfa/form oluşturmadan önce bir türün var olup olmadığını kontrol etme |
| Dinamik yönlendirme | Farklı sayfa türlerini farklı bileşenlere yönlendirme |
| Tür tabanlı izinler | Farklı rollerin farklı içerik türlerine erişmesine izin verme |
📋 Bilmeniz Gerekenler
Türler OneEntry Yönetim Panelinde yapılandırılır
Türleri SDK aracılığıyla oluşturamazsınız - türler, projenizi yapılandırdığınızda OneEntry yönetim panelinde tanımlanır. GeneralTypes modülü yalnızca mevcut türlerin listesini alır.
Türlerin nasıl oluşturulduğu:
OneEntry Yönetim Paneli → Ayarlar → İçerik Türleri → Sayfa Türü Ekle → "blog_post"
Oluşturulduktan sonra, bunları alabilirsiniz.
Türler vs. İşaretçiler vs. ID'ler
Önemli ayrım:
| Tanımlayıcı | Nedir | Örnek | En İyi Kullanım |
|---|---|---|---|
| Tür | Varlığın kategori/sınıflandırması | "blog_post" | Filtreleme ve gruplama |
| İşaretçi | Benzersiz insan tarafından okunabilir tanımlayıcı | "my_about_page" | Belirli varlıkları alma |
| ID | Sayısal veritabanı tanımlayıcısı | 42 | Dahili sistem kullanımı |
getAllTypes() tüm türleri döndürür
Bu yöntem, OneEntry projenizdeki:
- Sayfalar
- Formlar
- Ürün Blokları
- Ürünler
- Diğer varlıkların tüm türlerinin birleşik listesini döndürür.
Varlık kategorisine göre yerleşik bir filtreleme yoktur, bu nedenle manuel olarak filtrelemeniz gerekecek:
Türler büyük/küçük harf duyarlıdır
Türlerle çalışırken her zaman tam büyük/küçük harf eşleşmesi kullanın.
Dinamik içerik render'ı için türleri kullanın
Türler, polimorfik içerik sağlar - türüne göre farklı render mantığı:
📊 Hızlı Referans Tablosu
| Yöntem | Açıklama | Kullanım Durumu |
|---|---|---|
| getAllTypes() | Sistemdeki tüm genel türleri alır | Açılır menüleri doldurmak, türleri doğrulamak |
GeneralTypeEntity Yapısı:
{
id: number; // Benzersiz sayısal ID
type: string; // Tür adı (örneğin, "blog_post")
}
❓ Sıkça Sorulan Sorular (SSS)
Yeni türleri nasıl oluşturabilirim?
SDK aracılığıyla tür oluşturamazsınız. Türler, OneEntry Yönetim Panelinde oluşturulur:
1. OneEntry Yönetim Paneline giriş yapın
2. Ayarlar → İçerik Türleri'ne gidin
3. "Sayfa Türü Ekle" (veya Form Türü, Ürün Türü, vb.)'ne tıklayın
4. Tür adını girin: "blog_post"
5. Kaydedin
Artık SDK aracılığıyla alabilirsiniz:
const types = await GeneralTypes.getAllTypes();
// Döner: [{ id: 1, type: "blog_post" }, ...]
Türleri varlığa (sayfalar, formlar, ürünler) göre nasıl filtrelerim?
getAllTypes() yöntemi tüm varlıklar arasındaki tüm türleri döndürür. Manuel olarak filtrelemeniz gerekir.
SDK aracılığıyla türleri güncelleyebilir veya silebilir miyim?
Hayır. GeneralTypes modülü salt okunur. Tüm tür yönetimi OneEntry Yönetim Panelinde gerçekleşir.
Tür ID'si ile tür adı arasındaki fark nedir?
Her birini ne zaman kullanmalıyım:
| Alan | Kullanım Amacı | Örnek |
|---|---|---|
id | Dahili sistem referansları | Veritabanı ilişkileri |
type | Kod mantığınız ve karşılaştırmalarınız | if (page.type === 'blog_post') |
En iyi uygulama: Her zaman kodunuzda id numarası yerine type dizesini kullanın (ID'ler ortamlar arasında değişebilir).
Türler listesini önbelleğe alabilir miyim?
Evet! Türler nadiren değişir, bu nedenle önbelleğe almak önerilir.
Eksik türleri nasıl düzgün bir şekilde ele alabilirim?
Kullanmadan önce bir türün var olduğunu her zaman doğrulayın.
Türleri yetkilendirme/izinler için kullanabilir miyim?
Evet! Tür tabanlı erişim kontrolü uygulayabilirsiniz.
💡 Önemli Notlar
⚠️ Türler Projeye Özgüdür
Türler, OneEntry yönetim panelinizde yapılandırılır ve projeler arasında değişir. Evrensel "varsayılan" türler yoktur - her zaman listeyi dinamik olarak alın:
// ❌ Türleri sabit kodlamayın
const pageTypes = ['homepage', 'blog_post', 'product_page'];
// ✅ Türleri dinamik olarak alın
const allTypes = await GeneralTypes.getAllTypes();
const pageTypes = allTypes.filter(t => t.type.endsWith('_page'));
🔒 Salt Okunur Modül
GeneralTypes modülü yalnızca türleri okur. Tüm tür oluşturma, değiştirme ve silme işlemleri OneEntry Yönetim Panelinde gerçekleşir.
🎓 En İyi Uygulamalar
- Türleri dinamik olarak alın - Tür listelerini sabit kodlamayın
- Türleri önbelleğe alın - Nadiren değişir, performans için önbelleğe alın
- Tür dizelerini kullanın, ID'leri değil - Tür adları ortamlar arasında kararlıdır
- Türlerin var olduğunu doğrulayın - Kullanımdan önce bir türün geçerli olup olmadığını kontrol edin
- İsimlendirme kurallarını uygulayın - Tutarlı isimlendirme filtrelemeyi kolaylaştırır
- Yedek render'ı uygulayın - Bilinmeyen türleri düzgün bir şekilde ele alın
- Türlerinizi belgeleyin - Türlerin ve amaçlarının bir listesini tutun
- Tür güvenliği için TypeScript kullanın -
GeneralTypeEntityarayüzünden yararlanın
GeneralTypes modülünün tanımı
OneEntry Platformundaki GeneralTypes modülü, sistem içinde kullanılan genel türleri yönetmek ve almak için tasarlanmıştır. defineOneEntry fonksiyonunu kullanarak, bu türlerle etkileşimde bulunmak için bir GeneralTypes nesnesi oluşturabilirsiniz. Mevcut olan birincil yöntem getAllTypes'dir; bu, API'den GeneralTypeEntity türündeki tüm nesneleri alır. Bu yöntem, her biri bir id ve bir type içeren GeneralTypeEntity nesnelerinin bir dizisine çözülmek üzere bir Promise döndürür. Türler, sayfa düzenleri, formlar, ürün blokları ve daha fazlası gibi çeşitli amaçları kapsar ve farklı içerik yönetimi ihtiyaçları için esneklik sağlar.
const { GeneralTypes } = defineOneEntry( "your-project-url", { "token": "your-app-token" });