DİNAMİK ALAN MODÜLÜ
Dinamik Alan Modülü, DataLife Engine'de kategorilere özel dinamik veri tabloları oluşturmanızı sağlayan gelişmiş bir içerik yönetim eklentisidir. DLE'nin standart ilave alanlar sistemi sabit ve genel amaçlıdır; bu modül ise belirli kategorilere özgü, satır-sütun yapısında, tamamen özelleştirilebilir tablolar oluşturmanıza imkân verir.
Örneğin "Makineler" kategorisindeki makaleler için "Teknik Özellikler" tablosu, "Projeler" kategorisi için "Proje Ekibi" tablosu ayrı ayrı tanımlanabilir. Her kategori kendi dinamik tablo yapısına sahip olabilir.
KURULUM
Modül, DLE'nin standart plugin sistemi üzerinden kurulur. Admin panelinde Eklentiler bölümüne gidilir, indirilen ZIP dosyasının içindeki XML dosyası yüklenir ve eklenti etkinleştirilir. Kurulum sırasında iki veritabanı tablosu otomatik olarak oluşturulur: biri tablo konfigürasyonlarını, diğeri makaleye ait verileri saklar. Kaldırma işlemi de aynı panelden tek tıkla yapılır.
TEMEL ÖZELLİKLER
Kategoriye Özel Tablo Yapısı
Her tablo belirli bir DLE kategorisine bağlıdır. Makale ekleme veya düzenleme sayfasında bir kategori seçildiğinde, o kategoriye ait dinamik tablo alanları otomatik olarak AJAX ile yüklenir. Farklı bir kategori seçilirse tablo değişir. Kategori seçilmemişse dinamik alanlar görünmez.
Sütun Tipleri
Her tabloda sütunlara farklı veri tipleri atanabilir. Desteklenen tipler şunlardır: metin, sayı, tarih, tarih ve saat, URL, e-posta, telefon, renk seçici ve açılır liste. Açılır liste tipi seçildiğinde önceden tanımlı seçenekler virgülle ayrılarak girilir. Bu tipler hem veri girişi sırasında doğrulama sağlar hem de frontend görünümünü düzenler.
Satır Ekleme ve Silme
Her tablo, yönetici tarafından belirlenen varsayılan satır sayısıyla açılır. Makale eklerken ya da düzenlerken "+ Satır Ekle" butonu ile yeni satırlar eklenebilir, "- Satır Sil" butonu ile son satır kaldırılabilir. Satır sayısı esnek olduğu için aynı tablo yapısı farklı miktarda veri içerebilir.
Veri Kaydetme ve Düzenleme
Makale kaydedildiğinde dinamik alan verileri veritabanına JSON formatında yazılır. Makale düzenlendiğinde mevcut veriler otomatik olarak yüklenir ve alanlar dolu olarak gelir. Veriler makalenin ID'siyle ilişkilendirildiğinden makale silinmeden bağımsız olarak yönetilebilir.
ARAMA ÖZELLİĞİ
Aranabilir Sütunlar
Tablo oluşturulurken belirli sütunlar "aranabilir" olarak işaretlenebilir. Bu sütunlar, makale ekleme sırasında normal metin girişi yerine salt okunur bir alan ve yanında "Ara" butonu şeklinde görünür. Kullanıcı arama butonuna tıkladığında bir popup açılır.
Arama Popup'u
DLE'nin standart popup tasarımına uygun, mavi başlıklı bir arama penceresi açılır. Bu pencerede yazılan metin hem makale başlıklarında hem de yönetici tarafından belirlenmiş ilave alanlarda eş zamanlı olarak aranır. Arama en az 2 karakter girildiğinde otomatik olarak başlar.
Sonuçlar listelenir ve her sonuç satırında makale başlığı gösterilir. Başlıkta eşleşen kısımlar sarı arka planla vurgulanır. Başlık dışında bir ilave alanda eşleşme varsa yeşil rozet olarak gösterilir; alanda adı ve eşleşen değer birlikte belirtilir. Ek olarak gösterilmesi istenilen bilgi alanları mavi rozet olarak listelenir. Sonuç satırına tıklanınca seçilen makalenin başlığı ilgili alana yazılır ve popup kapanır.
ilave Alanlarda Arama
Tablo yapılandırılırken "Hangi ilave alanlarda arama yapılsın?" bölümünden DLE'nin mevcut ilave alanları checkbox listesi olarak gösterilir. İşaretlenen alanlarda da SQL araması yapılır, sonuçlar PHP tarafında kesin eşleşme kontrolünden geçirilir. Bu sayede ekipman adı, model numarası gibi ilave alan değerleriyle de arama yapılabilir hale gelir.
Arama Sonuçlarında Gösterilecek Alanlar
Arama popup'unda başlığın yanında hangi ilave alan değerlerinin gösterileceği ayrıca belirlenebilir. Her alan için bir "xfield adı" ve bir "görünen etiket" girilir. Etiket popup'ta rozet üzerinde yazılır.
SEKME GRUBU ENTEGRASYONU
DLE'nin ilave alanlar sisteminde sekme grupları (rubric) tanımlanmışsa, dinamik tablo bu sekme gruplarından birine bağlanabilir. Bu yapılandırıldığında makale ekleme sayfasında dinamik alanlar ayrı bir bölüm olarak değil, DLE'nin mevcut sekme sistemi içinde bir sekme olarak görünür. Sekme adı, bağlanan grubun adıyla aynı olur. Sekme grubu seçilmezse dinamik alanlar sayfa içinde normal bir blok olarak gösterilir.
FRONTEND GÖRÜNÜM
Template Etiketi
Dinamik alan verilerini site ön yüzünde göstermek için makale şablonuna {dynamic-fields} etiketi eklenir. Bu etiket tam makale görünümünde de kısa görünümde de çalışır.
Tablo Görünümü
Etiket yerleştirildiğinde ilgili kategorinin dinamik tablo konfigürasyonu otomatik olarak bulunur, makalenin verileri çekilir ve HTML tablo olarak render edilir. Tablo başlıkları sütun adlarından oluşur. Boş satırlar gösterilmez.
Tıklanabilir Bağlantılar
Aranabilir sütunlardaki değerler yalnızca metin olarak değil, tıklanabilir bağlantı olarak gösterilir. Sistem, o değerin başlık olduğu makaleyi veritabanında arar. Makale bulunursa değer, doğrudan o makalenin URL'sine bağlanır. URL, DLE'nin kendi BuildUrl mekanizması kullanılarak üretilir; kategori alt adı, tarih ve makale alt adından oluşan SEO uyumlu formattadır.
YÖNETİM PANELİ
Admin panelinde "Dinamik Alanlar" bölümü altında mevcut tablo konfigürasyonları listelenir. Her konfigürasyon için oluşturulma tarihi, bağlı kategori, sütun sayısı ve satır sayısı gösterilir. Düzenleme ve silme işlemleri bu listeden yapılır.
Yeni bir tablo oluşturulurken sırasıyla şu bilgiler girilir: tablo adı, bağlı kategori, sekme grubu seçimi, başlangıç satır sayısı, sütun sayısı, sütun başlıkları, sütun tipleri, açılır liste seçenekleri, aranabilir sütunlar, arama yapılacak kategori, ilave alanlarda arama seçimi ve popup'ta gösterilecek alanlar.
TEKNİK NOTLAR
Modül DLE'nin plugin cache sistemi aracılığıyla çalışır. AJAX istekleri admin.php üzerinden yönlendirilir ve DLE'nin güvenlik altyapısını kullanır. Veri arama işlemleri iki aşamalıdır: SQL ile geniş bir ön eleme yapılır, ardından PHP tarafında kesin eşleşme kontrolü uygulanır. Tüm kullanıcı girdileri veritabanına yazılmadan önce DLE'nin kendi safesql fonksiyonundan geçirilir. Frontend URL üretimi DLEUrl::BuildUrl ile yapıldığından site genelinde SEO ayarlarıyla tam uyumludur.
GELİŞTİRME SÜRECİ
Bu modül, takip.aymak.net sitesinin ihtiyaçları doğrultusunda sıfırdan tasarlanmış ve geliştirilmiştir. DLE'nin mevcut altyapısına müdahale etmeden çalışır; standart eklenti mekanizması kullanıldığı için DLE güncellemelerinden bağımsızdır.
Video: (Modülün eski halinin videosu)
https://www.youtube.com/watch?v=D6iR0eaDoHg
fullstory.tpl ve shortstory.tpl kullanımı
<div class="dynamic-fields-container">
{dynamic-fields}
</div>
Örnek Tablo Sitili:
<style>
.dynamic-fields-table {
margin: 20px 0;
padding: 20px;
background: #f9f9f9;
border-radius: 8px;
}
.dynamic-fields-table h3 {
margin-top: 0;
margin-bottom: 15px;
color: #333;
font-size: 20px;
}
.dynamic-fields-table table {
width: 100%;
border-collapse: collapse;
}
.dynamic-fields-table th {
background: #4CAF50;
color: white;
padding: 12px;
text-align: left;
font-weight: bold;
}
.dynamic-fields-table td {
padding: 10px;
border: 1px solid #ddd;
}
.dynamic-fields-table tbody tr:nth-child(even) {
background: #f2f2f2;
}
.dynamic-fields-table tbody tr:hover {
background: #e8f5e9;
}
</style>