1. Введение
Список переменных и классов DLE которые вы можете использовать в вашем подключаемом модуле, без дополнительного объявления:
$is_logged - содержит информацию, является ли посетитель авторизованным пользователем или гостем, и содержит значения true или false.
$member_id - содержит массив с информацией о авторизованном пользователе, включая всю его информацию из профиля.
$db - класс DLE для работы с базой данных.
$tpl - класс DLE для работы с шаблонами.
$cat_info - массив содержащий информацию обо всех категориях на сайте.
$config - массив содержащий информацию обо всех настройках скрипта.
$user_group - массив содержащий информацию о всех группах пользователей и их настройках.
$category_id - содержит ID категории которую просматривает посетитель.
$_TIME - содержит текущее время в UNIX формате с учетом настроек смещения в настройках скрипта.
$lang - массив содержащий текст из языкового пакета.
$smartphone_detected - содержит информацию о том, просматривает ли пользователь сайт со смартфона или с обычного браузера, и содержит значения true или false.
$dle_module - содержит информацию о разделе сайта, который просматривает пользователь, либо информацию переменной do из URL браузера.
Внимание: Ваш модуль должен только читать данные из данных переменных, внесение изменений в значения переменных повлечет сбои в работе стандартных возможностей скрипта и дальнейшей его некорректной работе.
2. Создание модулей для DLE
2.1 Разберём, для начала, создание модуля в качестве блока, который затем можно вставить в любую часть вашего шаблона.
У нас имеется произвольный код:
PHP код:
<?php
$fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5);
$status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>");
echo $status;
?>
Данный код проверяет текущий статус сервера. Но нам ведь неважно что разбирать на примере. Поэтому не будем к нему цепляться, а просто посмотрим, как его вставить в Datalife Engine.
Для того, чтобы сделать из данного "огрызка" модуль для DLE нам необходимо привести его к такому виду:
PHP код:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" );
$fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5);
$status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>");
$serv_status = <<<HTML
Статус сервера - {$status}
HTML;
$tpl->result***91;'content'***93; = $serv_status;
?>
Различий, на самом деле немного: 1. мы запрещаем прямой доступ к файлу, и подключаем класс для работы с шаблонами.
Сохраняем файл подименем status.php в папке /engine/modules
Далее нам необходимо открыть файл index.php
В нём найти
PHP код:
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' )
И ниже добавить
PHP код:
require_once ENGINE_DIR' . '/modules/status.php;
Найти
PHP код:
$tpl->set ( '{headers}', $metatags."\n".build_js($js_array, $config) );
Ниже добавить
PHP код:
$tpl->set('{status}', $serv_status);
Всё. Теперь наш модуль готов к эксплуатации. Достаточно открыть любой интересующий вас шаблон и вставить в него {status}
2.2 Но если же нам мало одного блока, а хотим, к примеру, чтобы наш модуль занимал всю страницу, то поступаем след. образом:
За основу возьмём тот же код, что и рассматривали в первом варианте:
PHP код:
<?php
$fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5);
$status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>");
echo $status;
?>
По сути, код модуля будет аналогичен предыдущему рассмотренному варианту: всё также запрещаем прямой доступ и подключаем шаблонизатор.
PHP код:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" );
$fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5);
$status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>");
$serv_status = <<<HTML
Статус сервера - {$status}
HTML;
$tpl->result***91;'content'***93; = $serv_status;
?>
Сохраняем файл под именем root.php в папке /engine/modules
Чтобы добавить наш модуль в качестве страницы, открываем файл engine.php, которой располагается в одноимённой папке /engine
Ищем в нём
PHP код:
switch ( $do ) {
и ниже вставляем
PHP код:
case "test" :
include ENGINE_DIR . '/modules/root.php';
break;
Где case - название страницы.
Таким образом ваш модуль будет доступен по адресу
http://ваш сайт/index.php?do=test