DataLife Engine 17 ve üzeri sürümler için profesyonel eklenti ve modül geliştirmek amacıyla gereken tüm temel bilgileri, en iyi uygulamaları ve gelişmiş teknikleri içeren eksiksiz bir rehber.
DataLife Engine (DLE), Rus menşeli güçlü bir içerik yönetim sistemidir. DLE 13.0 sürümüyle birlikte devrim niteliğinde bir eklenti sistemi tanıtılmıştır. Bu sistem, sanal dosya sistemi teknolojisi kullanılarak oluşturulmuş ve orijinal dosyaları değiştirmeden modifikasyon yapılmasına olanak tanır.
Eklenti sistemi sanal dosya sistemi teknolojisi kullanılarak oluşturulmuştur. Eklentinizde hangi dosyanın etkileneceğini ve gerçekleştirilecek eylemleri tanımlarsınız. Bu bilgilere dayanarak DataLife Engine, bu dosyaların sanal kopyalarını oluşturur.
myplugin.zip
├── install.xml # Ana eklenti tanım dosyası (ZORUNLU)
├── engine/
│ ├── modules/ # Modül dosyaları
│ ├── inc/ # Admin panel dosyaları
│ └── skins/
│ └── images/ # İkon dosyaları
├── templates/
│ └── Default/ # Şablon dosyaları
└── uploads/ # Ek dosyalar
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
<!-- Eklenti Bilgileri -->
<name>My Plugin Name</name>
<description><![CDATA[Eklenti açıklaması]]></description>
<icon>engine/skins/images/myplugin.png</icon>
<version>1.0</version>
<dleversion>17.0</dleversion>
<versioncompare>greater</versioncompare>
<author>Your Name</author>
<mysqlinstall><![CDATA[]]></mysqlinstall>
<mysqlupgrade><![CDATA[]]></mysqlupgrade>
<mysqlenable><![CDATA[]]></mysqlenable>
<mysqldisable><![CDATA[]]></mysqldisable>
<mysqldelete><![CDATA[]]></mysqldelete>
<file name="engine/engine.php">
<operation action="before">
<searchcode><![CDATA[
// Aranacak kod
]]></searchcode>
<replacecode><![CDATA[
// Eklenecek/değiştirilecek kod
]]></replacecode>
</operation>
</file>
</dleplugin>
Dosyalar üzerinde birkaç eylem gerçekleştirilebilir:
<!-- Önce Ekleme -->
<operation action="before">
<searchcode><![CDATA[$config['version_id'] = "17.0";]]></searchcode>
<replacecode><![CDATA[
// My plugin code
define('MYPLUGIN_VERSION', '1.0');
]]></replacecode>
</operation>
<!-- Değiştirme -->
<operation action="replace">
<searchcode><![CDATA[$limit = 10;]]></searchcode>
<replacecode><![CDATA[$limit = 20;]]></replacecode>
</operation>
Geliştirdiğiniz PHP scriptlerini şablon dosyalarına {include} etiketiyle dahil edebilirsiniz.
<!-- Basit include -->
{include file="engine/modules/mymodule.php"}
<!-- Parametreli include -->
{include file="engine/modules/mymodule.php?param=value1&variable2=value2"}
<!-- Dinamik parametreler -->
{include file="engine/modules/mymodule.php?param={news-id}"}
Eklentinizin yaşam döngüsü boyunca çalışacak SQL sorgularını tanımlayabilirsiniz.
<!-- Kurulum sırasında -->
<mysqlinstall><![CDATA[
CREATE TABLE IF NOT EXISTS {prefix}_myplugin (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
]]></mysqlinstall>
<!-- Eklenti silindiğinde -->
<mysqldelete><![CDATA[
DROP TABLE IF EXISTS {prefix}_myplugin;
]]></mysqldelete>
// Güvenli veri ekleme
$title = $db->safesql($title);
$db->query("INSERT INTO " . PREFIX . "_myplugin (title) VALUES ('{$title}')");
// Tek satır çekme
$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_myplugin");
echo $row['count'];
// DLE kontrolü
if (!defined('DATALIFEENGINE')) {
die("Hacking attempt!");
}
// Admin kontrolü
if (!defined('LOGGED_IN')) {
die("Hacking attempt!");
}
// CSRF koruması
if ($_REQUEST['user_hash'] != $dle_login_hash) {
die("Session error");
}
// SQL Injection koruması
$input = $db->safesql($input);
// XSS koruması
$output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
// Sayısal veri kontrolü
$id = intval($_REQUEST['id']);
<?php
@error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
@ini_set('display_errors', true);
define('DATALIFEENGINE', true);
define('ROOT_DIR', substr(dirname(__FILE__), 0, -12));
define('ENGINE_DIR', ROOT_DIR . '/engine');
include ENGINE_DIR . '/data/config.php';
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/sitelogin.php';
header('Content-type: application/json; charset=' . $config['charset']);
$response = array('success' => false);
if (!$is_logged) {
$response['error'] = 'Giriş yapmanız gerekiyor';
echo json_encode($response);
die();
}
$action = $_REQUEST['action'];
switch ($action) {
case 'get_data':
$response['success'] = true;
$response['data'] = "Bu bir AJAX yanıtıdır.";
break;
default:
$response['error'] = 'Geçersiz işlem';
}
echo json_encode($response);
?>
function getMyPluginData() {
ShowLoading('');
$.ajax({
url: dle_root + 'engine/ajax/myplugin.php',
type: 'POST',
dataType: 'json',
data: {
action: 'get_data',
user_hash: dle_login_hash
},
success: function(response) {
HideLoading('');
if (response.success) {
DLEalert(response.data, 'Başarılı');
} else {
DLEalert(response.error, 'Hata');
}
},
error: function() {
HideLoading('');
DLEalert('Sunucu hatası oluştu.', 'Hata');
}
});
}
Eklentinizin farklı dilleri desteklemesi için dil dosyaları oluşturabilirsiniz.
engine/language/Turkish/myplugin.lng<?php
$lang['myplugin_title'] = 'Eklenti Başlığı';
$lang['myplugin_save'] = 'Kaydet';
?>
if (file_exists(ENGINE_DIR . '/language/' . $config['langs'] . '/myplugin.lng')) {
include_once ENGINE_DIR . '/language/' . $config['langs'] . '/myplugin.lng';
} else {
include_once ENGINE_DIR . '/language/English/myplugin.lng';
}
echo $lang['myplugin_title'];
DLE'nin zamanlanmış görevler sistemiyle entegre çalışacak scriptler oluşturabilirsiniz.
<?php
if (!defined('DATALIFEENGINE')) {
define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname(__FILE__) . '/../..');
define('ENGINE_DIR', ROOT_DIR . '/engine');
include ENGINE_DIR . '/data/config.php';
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
}
// Her gün çalışacak bir işlem: 7 günden eski geçici kayıtları sil
$one_week_ago = time() - (86400 * 7);
$db->query("DELETE FROM " . PREFIX . "_myplugin_temp WHERE date < '{$one_week_ago}'");
echo "Cron job completed successfully";
?>
Eklentinizi dağıtıma hazır hale getirmek için bir ZIP arşivi oluşturan basit bir PHP scripti.
<?php
$plugin_name = 'myplugin';
$version = '1.0.0';
$files = [
'install.xml',
'engine/modules/myplugin.php',
'engine/inc/myplugin.php',
'engine/skins/images/myplugin.png'
];
$zip = new ZipArchive();
$filename = "{$plugin_name}_v{$version}.zip";
if ($zip->open($filename, ZipArchive::CREATE) !== TRUE) {
exit("ZIP dosyası oluşturulamadı.\n");
}
foreach ($files as $file) {
if (file_exists($file)) {
$zip->addFile($file, $file);
}
}
$zip->close();
echo "Eklenti başarıyla paketlendi: {$filename}\n";
?>
Bu rehber, DataLife Engine 17 ve üzeri için profesyonel eklenti ve modül geliştirmeniz için gereken tüm temel ve ileri düzey bilgileri içermektedir. DLE'nin güçlü eklenti sistemi sayesinde, motor dosyalarını değiştirmeden karmaşık eklentiler oluşturabilirsiniz.
safesql, intval, CSRF kontrolü) kullanın.