<< Click to Display Table of Contents >> Навигация: Разработчикам > Разработка и подключение модулей |
DataLife Engine предоставляет удобные механизмы для подключения разработанных вами модификаций скрипта. Данные механизмы позволяют обеспечить работоспособность и после обновления скрипта на новую версию, т.к. данные механизмы позволяют осуществлять подключение без правки файлов скрипта. Для подключения разработанных вами модулей вам необходимо в любом необходимом вам шаблоне добавить тег:
{include file="engine/modules/mymod.php"}
Где engine/modules/ это путь к файлу вашего модуля, а mymod.php имя подключаемого файла. Стандартные файлы модулей DataLife Engine находятся в этой папке и мы вам рекомендуем использовать данную папку, однако это не является обязательным требованием и файл может находится в любой другой папке на сервере. Единственное ограничение безопасности по подобному подключению модулей, это то что на папку в которой находится файл не должно быть прав на запись (CHMOD 777). Также мы рекомендуем вам использовать именно относительные пути при подключении модулей, DataLfe Engine автоматически распознает относительные пути и подключает ваши модули уже согласно настройкам скрипта и путям где установлен скрипт. Тем самым вы можете создавать универсальные инструкции по установке ваших модификаций.
Также вы можете подключать PHP файлы вашего модуля передав им различные параметры, например:
{include file="engine/modules/mymod.php?param=value1&variable2=value2"}
Благодаря подобному подключению, вы можете делать ваши модификации многофункциональными, которые будут выполнять различные роли и функции при различных подключениях. Переданные переменные будут доступны в вашем модуле как $param и $variable2 соответственно.
В качестве параметров к подключаемым модулям вы можете задавать шаблонные теги скрипта (за исключением использования тега в шаблоне main.tpl и тегов принадлежащих шаблону main.tpl). Например, при добавлении в шаблон полной новости конструкции {include file="engine/modules/mymod.php?param={news-id}"}, вы можете передавать вашему стороннему модулю в качестве параметра ID новости и т.д. Вниманию разработчиков: Передаваемые в скрипт параметры, это аналоги GET параметров URL браузера, соответственно при выборе передаваемых тегов вы должны учитывать ограничения GET строки, другими словами вы не можете передать в качестве параметра содержимое полной новости к примеру.
Также вы можете использовать подключение своих модулей и для замены основного блока, где выводятся новости и другая основная информация, для этого необходимо использовать данный тег совместно с тегами [aviable=раздел]текст[/aviable] и [not-aviable=раздел]текст[/not-aviable] Описание тегов смотрите в документации в разделе "Вывод новостей на страницах". Вы можете использовать как стандартный список разделов, так и использовать создание собственного раздела сайта, передав его в URL браузера. Рассмотрим простейший пример. Вы хотите добавить к стандартным разделам сайта, добавить свой раздел и выводить информацию в нем из вашего модуля. Допустим вы хотите создать раздел FAQ. Для этого в шаблоне main.tpl прописывается конструкция:
[aviable=faq]{include file="engine/modules/mymod.php"}[/aviable]
[not-aviable=faq]{content}[/not-aviable]
После подобного подключения помимо работы стандартных разделов сайта при обращении по адресу: http://site.ru/index.php?do=faq вместо новостей будет выводится ваш новый раздел из вашего модуля.
Для работы ваших модулей и вывода информации именно в том месте шаблона, где вставлен вышеуказанный тег, обязательно только одно важное условие. Вывод информации должен осуществляется только через функцию PHP echo. Рассмотрим пример простейшего модуля и вывода информации. Создадим файл mymod.php со следующим содержимым:
<?php
echo "Тестовый модуль";
?>
При подключении этого файла в шаблоне, в данном месте шаблона появится текст: Тестовый модуль
Список переменных и классов 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 браузера.
Внимание: Ваш модуль должен только читать данные из данных переменных, внесение изменений в значения переменных повлечет сбои в работе стандартных возможностей скрипта и дальнейшей его некорректной работе.