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.
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>
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');
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};
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.