1. İlk Eklentiniz
Bu sayfada, 10 dakikada çalışan bir DLE eklentisi yazacağız. Eklenti şunları yapacak:
- Haber sayfasının altına bir kutu ekleyecek,
- Yönetim panelinde bir ayar sayfası gösterecek,
- Kurulumda kendi veritabanı tablosunu oluşturacak.
i
Ön koşul
DLE 21.0 kurulu ve yönetim paneline erişiminiz olmalı.
Eklenti sistemi DLE 13.0'dan itibaren vardır.
Adım 1 — Planlama
Eklenti yazmanın ilk ve en önemli adımı şu soruyu cevaplamaktır: "Hangi dosyaya, hangi satırın yanına kod ekleyeceğim?"
!
Kritik kural
Hedef dosyanız DLE tarafından
DLEPlugins::Check() ile yükleniyor olmalı.
index.php, admin.php ve cron.php yamalanamaz —
bu dosyalara yazdığınız kod hiç çalışmaz. Ayrıntısı: Eklenti Mimarisi.
Bizim hedefimiz engine/modules/main.php olacak; bu dosya ön yüzde her açılışta çalışır.
Adım 2 — Dosya Yapısı
Eklenti paketini şu şekilde hazırlayın. ZIP site köküne görelidir, upload/ sarmalayıcı kullanılmaz:
benim-eklentim.zip
├── benim-eklentim.xml # manifest (ZIP kökünde, adı serbest)
├── engine/
│ ├── inc/
│ │ └── benim-eklentim.php # yönetim paneli modülü
│ └── modules/
│ └── benim_kutum.php # ön yüz modülü
└── public/
└── benim-eklentim/
└── stil.css # statik dosyalar
✕
Yalnızca
.php ve .lng yamalanabilir
.css, .js, .tpl ve görseller <file><operation> ile
değiştirilemez — bunlar ZIP içinde normal dosya olarak gelir.
Adım 3 — Manifesti Yazın
benim-eklentim.xml dosyasını oluşturun:
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
<name>Benim Eklentim</name>
<description>Haber altına kutu ekler.</description>
<version>1.0</version>
<dleversion>21.0</dleversion>
<versioncompare>greater</versioncompare>
<filedelete>0</filedelete>
<mysqlinstall><![CDATA[
CREATE TABLE IF NOT EXISTS `{prefix}_benim_kutum` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`baslik` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE={engine} DEFAULT CHARSET={charset};
INSERT IGNORE INTO `{prefix}_admin_sections`
(`name`, `title`, `descr`, `icon`, `allow_groups`)
VALUES ('benim-eklentim', 'Benim Eklentim', 'Kutu ayarları', 'reaction.png', '1');
]]></mysqlinstall>
<mysqlupgrade><![CDATA[ /* Güncellemede çalışır */ ]]></mysqlupgrade>
<mysqlenable><![CDATA[]]></mysqlenable>
<mysqldisable><![CDATA[]]></mysqldisable>
<mysqldelete><![CDATA[
DROP TABLE IF EXISTS `{prefix}_benim_kutum`;
DELETE FROM `{prefix}_admin_sections` WHERE `name` = 'benim-eklentim';
]]></mysqldelete>
<phpinstall><![CDATA[ // <?php YAZMAYIN - dogrudan calistirilir ]]></phpinstall>
<phpupgrade><![CDATA[]]></phpupgrade>
<phpenable><![CDATA[]]></phpenable>
<phpdisable><![CDATA[]]></phpdisable>
<phpdelete><![CDATA[]]></phpdelete>
<file name="engine/modules/main.php">
<operation action="after">
<searchcode><![CDATA[echo $tpl->result['main'];]]></searchcode>
<replacecode><![CDATA[include_once(DLEPlugins::Check(ENGINE_DIR . '/modules/benim_kutum.php'));]]></replacecode>
<searchcount>1</searchcount>
<enabled>1</enabled>
</operation>
</file>
<file name="engine/modules/benim_kutum.php">
<operation action="create">
<replacecode><![CDATA[<?php
if (!defined('DATALIFEENGINE')) die('Hacking attempt!');
// Kutu kodunu buraya yazacağız
]]></replacecode>
<enabled>1</enabled>
</operation>
</file>
</dleplugin>
!
Çapa benzersiz olmalı
searchcount vermezseniz ve çapa dosyada birden fazla geçiyorsa, kodunuz
her geçişte tekrar tekrar eklenir. Ayrıntısı: Çapa Sanatı.
Adım 4 — Ön Yüz Modülünü Yazın
engine/modules/benim_kutum.php içeriği:
if (!defined('DATALIFEENGINE')) die('Hacking attempt!');
global $db, $tpl, $config;
// Tablodan kayıtları çek
$rows = array();
$db->query("SELECT id, baslik FROM " . PREFIX . "_benim_kutum ORDER BY id DESC LIMIT 5");
while ($row = $db->get_row()) {
$rows[] = $row;
}
$db->free();
if (!$rows) return; // gösterilecek kayıt yoksa sessizce çık
// Şablona bas
$tpl->load_template('benim_kutum.tpl');
foreach ($rows as $row) {
$tpl->set('{baslik}', htmlspecialchars($row['baslik'], ENT_QUOTES, 'UTF-8'));
$tpl->compile('benim_kutum');
}
$tpl->clear();
✕
Şablon dosyası yoksa etiket çalışmaz
{benim_kutum} etiketi yalnızca şablonunuzda bu blok varsa görünür. Şablon bloğunu
eklemeyi unutursanız modül çalışır ama hiçbir şey görünmez. Şablonu
phpinstall içinde PHP ile otomatik üretebilirsiniz.
Adım 5 — Kurun ve Test Edin
-
ZIP'i hazırlayın
Manifest ZIP'in kökünde olsun, diğer dosyalar
engine/…gibi kök-göreli yerleşsin. -
Yönetim panelinden yükleyin
Eklentiler bölümünden ZIP'i yükleyin. Kurulumda
mysqlinstallçalışır ve tablonuz oluşur. - Hataları kontrol edin Eklentiler → Hataları göster ekranını açın. "Kod bulunamadı" yazıyorsa çapanız tutmamıştır.
- Ön yüzü test edin Siteyi açın. Kutu görünmüyorsa tablo boştur veya şablon etiketi eksiktir.
Sonraki Adım
Çalışan bir iskelet kurduğunuza göre artık şunlara bakabilirsiniz: