Eklenti Geliştirme Temelleri (v19.x)

Giriş

DataLife Engine (DLE), 13.0 sürümünden itibaren dosyalara doğrudan müdahale gerektirmeyen güçlü bir Eklenti (Plugin) Sistemi sunar. Bu sistem, çekirdek dosyaları değiştirmeden kod eklemenize, değiştirmenize veya silmenize olanak tanır. DLE 19.x ile birlikte bu yapı daha güvenli ve merkezi bir hal almıştır.


1. Eklenti Yapısı (plugin.xml)

Her eklenti aslında bir XML dosyasıdır. Bu dosya, eklentinin bilgilerini ve hangi dosyalarda hangi değişikliklerin yapılacağını tanımlar.

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
    <name>Eklenti Adı</name>
    <description>Eklenti açıklaması</description>
    <version>1.0.0</version>
    <dleversion>19.0</dleversion>
    <versioncompare>greater</versioncompare>
    <upgradeurl></upgradeurl>
    <filedelete>0</filedelete>
    <file>
        <name>engine/modules/show.full.php</name>
        <operation action="after">
            <searchcode>$tpl->set( '{title}', $row['title'] );</searchcode>
            <replacecode>$tpl->set( '{my_tag}', "Merhaba Dünya!" );</replacecode>
        </operation>
    </file>
</dleplugin>

Operasyon Türleri:

  • after: Belirtilen kodun hemen sonrasına ekler.
  • before: Belirtilen kodun hemen öncesine ekler.
  • replace: Belirtilen kodu tamamen değiştirir.
  • replaceall: Tüm dosya içeriğini yeni kodla değiştirir.
  • create: Yeni bir dosya oluşturur.

2. Güvenlik ve Dosya Dahil Etme

Eklentilerinizde harici PHP dosyaları kullanıyorsanız, DLE'nin eklenti sisteminin bu dosyaları da "işleyebilmesi" için DLEPlugins::Check() fonksiyonunu kullanmalısınız.

Önemli: Doğrudan include 'dosya.php'; kullanmak, o dosya üzerinde başka bir eklentinin değişiklik yapmasını engeller.
// DOĞRU KULLANIM:
include_once (DLEPlugins::Check(ENGINE_DIR . '/modules/eklentim.php'));

// YANLIŞ KULLANIM:
include_once (ENGINE_DIR . '/modules/eklentim.php');

3. Veritabanı İşlemleri

Eklentilerde veritabanı tabloları oluştururken her zaman {prefix} etiketini kullanın. DLE, kurulum sırasında belirlenen tablo ön ekini otomatik olarak yerleştirecektir.

CREATE TABLE IF NOT EXISTS `{prefix}_my_plugin_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET={charset};

4. Kullanılabilir DLE Değişkenleri ve Sınıfları

Eklentilerinizde (özellikle harici dosyalarda) herhangi bir tanım yapmadan kullanabileceğiniz hazır değişkenler:

$is_logged

Ziyaretçinin giriş yapıp yapmadığı (bool).

$member_id

Giriş yapmış kullanıcının tüm profil bilgileri (array).

$db

Veritabanı bağlantı nesnesi.

$tpl

Şablon motoru nesnesi.

Not: Bu değişkenleri sadece okuma amaçlı kullanın, değerlerini doğrudan değiştirmek sistem kararlılığını bozabilir.