DLE 19.x ile birlikte, güvenlik mimarisi "Modern Shell" adı verilen bir yapıya geçmiştir. Bu yapının en temel kuralı şudur: PHP dosyaları ile statik dosyalar (JS, CSS, Resim) birbirinden tamamen ayrılmalıdır.
Artık /engine/ klasörü altındaki dosyalara tarayıcı üzerinden doğrudan erişim (URL üzerinden) tamamen kapatılmıştır.
Eklentilerinize ait tüm statik dosyaları (JS, CSS, Font, Resim) mutlaka /public/ klasörü altında bir alt klasöre koymalısınız.
Eğer JS dosyanızı /engine/modules/test.js içine koyarsanız, DLE'nin .htaccess kuralları gereği tarayıcı bu dosyayı 403 Forbidden diyerek reddedecektir. Sadece /public/ ve /uploads/ klasörleri dışa açıktır.
Eklentinizde CSS veya JS dosyalarını kodun içine <script> yazarak değil, DLE'nin API'sini kullanarak dahil etmelisiniz. Bu, dosyaların sayfanın en altında toplanmasını ve daha hızlı yüklenmesini sağlar.
// engine/inc/myplugin.php içinde
$css_array[] = "public/myplugin/style.css";
$js_array[] = "public/myplugin/script.js";
Profesyonel bir eklenti için önerilen yapı:
Eklenti_Paketi/
├── engine/
│ └── inc/myplugin.php
└── public/
└── myplugin/
├── css/
│ └── styles.css
├── js/
│ └── main.js
└── images/
└── logo.png
JS dosyanızın içinde bir resim veya başka bir dosyaya erişirken mutlaka tam yolu veya dle_root değişkenini kullanın:
// Yanlış: ../images/icon.png (Çalışmayabilir)
// Doğru:
const iconUrl = dle_root + 'public/myplugin/images/icon.png';
/public/ klasöründeki dosyalar Nginx veya Apache tarafından doğrudan sunulur, PHP yorumlayıcısı devreye girmez. Bu da statik dosyaların çok daha hızlı yüklenmesi ve sunucu yükünün azalması demektir.