16. Paketleme ve Yayın
Eklentiniz çalışıyor. Şimdi onu başkalarına (veya başka sitelere) kurulabilir bir paket hâline getirmek kaldı. Bu sayfa, DLE'nin ZIP yükleme akışının tam kurallarını anlatır.
Paketin kökü site köküdür
En sık yapılan hata: dosyaları upload/ gibi bir sarmalayıcı klasörün içine
koymak. DLE böyle bir sarmalayıcı beklemez. ZIP içindeki yollar site
köküne görelidir.
upload/engine/modules/… gibi bir yola yazamaz; eklenti kurulur ama
hiçbir dosya yerine oturmaz.
Manifest nasıl bulunur?
DLE, ZIP içindeki dosyaları tek tek tarar ve şu iki koşulu sağlayan ilk dosyayı manifest kabul eder:
- Uzantısı
xml, - Adında
/yok — yani ZIP'in kökünde.
// engine/ajax/plugins.php:543-550 (özet)
$filename_arr = explode( ".", $file['name'] );
$type = strtolower(end( $filename_arr ));
if( $type == "xml" AND strpos($file['name'], "/") == false ) {
$plugin_file = $zip->getFromIndex($i);
$plugin_file_index = $i;
continue;
}
Bunun anlamı:
- Manifest dosyasının adı serbesttir (
dleplugin.xmlolmak zorunda değil). - Kök dışındaki XML dosyaları manifest sayılmaz — alt klasörlerdeki XML'ler normal dosya olarak kopyalanır.
- Kökükte birden fazla XML varsa ilki kullanılır; diğerleri normal dosya olarak açılır.
- Manifest bulunamazsa kurulum
plugins_errors_9hatasıyla durur.
Yükleme kuralları
| Kural | Ayrıntı |
|---|---|
| Dosya uzantısı | Yalnızca .zip veya .xml kabul edilir. Başka bir uzantı
doğrudan reddedilir. |
| PHP gereksinimi | Sunucuda ZipArchive eklentisi kurulu olmalıdır; değilse ZIP
kurulumu hiç başlamaz. |
| ZIP bütünlüğü | Arşiv ZIPARCHIVE::CHECKCONS ile açılır. Bozuk/eksik bir ZIP
reddedilir. |
| Klasörler | ZIP içindeki klasör kayıtları atlanır; yalnızca dosyalar işlenir. |
| Çekirdek dosya koruması | DLE'nin antivirus sınıfının korumalı listesindeki bir yolu pakete
koyarsanız kurulum hata vererek durur. |
| Yazma izni yoksa | engine/ veya language/ yazılamıyorsa DLE sizden
FTP bilgileri ister ve dosyaları FTP ile yükler
(needftp yanıtı). |
| Hata kayıtları | Dosya çıkarma sırasındaki hatalar _plugins_logs tablosuna
type = 'upload' olarak yazılır. |
filelist ve filedelete ilişkisi
ZIP kurulumunda, manifest hariç tüm dosyaların adları bir listeye toplanır ve
{prefix}_plugins.filelist sütununa yazılır:
if(in_array("./" . $file['name'], $antivirus->good_files)) {
echo_error ($lang['plugins_errors_10']);
} else $file_list[] = $file['name'];
Bu liste, eklenti silinirken <filedelete>1</filedelete>
verildiyse kullanılır. Yani:
filelistyalnızca ZIP kurulumunda dolar (XML yapıştırarak kurulumda boştur).- Silme sırasında korumalı dosyalar listede olsa bile atlanır.
Sürümleme ve adlandırma
| Öğe | Öneri |
|---|---|
| Paket dosya adı | benim-eklentim-1.2.0.zip — sürümü dosya adına yazın. |
<name> | Benzersiz ve sürümden bağımsız olmalı. Aynı adla ikinci eklenti kurulamaz. |
<version> | Her yayında artırın. Panelde gösterilir. |
<dleversion> + <versioncompare> | Desteklediğiniz en eski DLE sürümünü belirtin (greater). |
<upgradeurl> | Güncelleme denetimi istiyorsanız doldurun. |
Paketleme adımları
- Geçici bir test sitesi kullanın Canlı sitenizde denemeyin. Temiz bir DLE 21.0 kurulumu ideal.
-
Tabloları ön ekle yazın
{prefix}_kullanın; ön eksiz tablo adları başka eklentilerle çakışır. -
Manifesti köke koyun
ZIP kökünde tek bir
*.xmlolsun. -
Yolları kök-göreli yapın
engine/…,language/…,templates/…— sarmalayıcı yok. -
Gereksiz dosyaları atın
Kaynak kontrol dosyaları, notlar,
node_modules,.DS_Store, yedekler… - ZIP'i oluşturun ve içeriğini doğrulayın Arşivi açıp kökte manifest olduğunu ve yolların doğru olduğunu gözle kontrol edin.
Kurulum test döngüsü
Her yayından önce şu beş senaryoyu çalıştırın (ayrıntı: Doğrulama Araçları):
| Test | Beklenti |
|---|---|
| 1. Temiz kurulum | Kurulum hatasız; Hataları göster ekranı boş. |
| 2. Yeniden yükleme | Güncelleme çalışır; veriler korunur. |
| 3. Pasife alma / etkinleştirme | Site normal çalışır; eklenti iz bırakmaz/açılınca geri gelir. |
| 4. Silme | Tablo, ayar ve menü kaydı temizlenir. |
| 5. Farklı DLE sürümü | Desteklenmeyen sürümde eklenti pasif kurulur. |
Sık karşılaşılan kurulum hataları
| Belirti | Sebep |
|---|---|
| Kurulum reddedildi | Dosya uzantısı .zip/.xml değil. |
| "You need the PHP 'ZipArchive' extension installed" | Sunucuda ZipArchive yok. |
| ZIP açılamadı | Arşiv bozuk (CHECKCONS başarısız) — yaygın sebep: hatalı bir arşivleyici. |
| Manifest bulunamadı | Kökükte *.xml yok (alt klasörde olabilir). |
| Çekirdek dosya hatası | Paketinizde DLE'nin korumalı dosyalarından biri var. |
needftp isteniyor | engine/ veya language/ yazılamıyor; izinleri düzeltin veya FTP bilgisi verin. |
| Kuruldu, çalışmıyor | Çapa tutmadı → Hataları göster ekranına bakın. |
| Kuruldu, pasif görünüyor | dleversion/versioncompare veya needplugin uyuşmadı. |
Yayın öncesi kontrol listesi
- Manifest ZIP kökünde, adı
*.xml. - Tüm dosya yolları kök-göreli;
upload/sarmalayıcısı yok. - Manifestte
<name>,<version>,<dleversion>dolu. - Panel modülü
admin_sections'a kaydediliyor ve silmede kaldırılıyor. - Tüm çapalar önceden denetlendi (
anchor-check.php). - Beş kurulum senaryosu test edildi.
- Pakette gereksiz dosya yok.
- Yayın notlarında sürüm ve değişiklikler yazılı.