вопрос
Привет, делаю модуль, вывел шаблон, а он выводится в самом верху страницы, даже до Что не так?
<?php
/**
* Модуль для вывода информации с сервера Warcraft 3 Ghost++
* =======================================================
* Автор: Artyom91
* URL: http://Артем91.рф/
* ICQ: 5605715
* email: temkasd91@gmail.com
* =======================================================
* Файл: war3.php
* -------------------------------------------------------
* Версия: 1.0 (25.12.2013)
* =======================================================
*/
// Главная строка.
// Без этой строчки любой пользователь может получить прямой доступ к файлу модуля и передать туда свои переменные, что чревато элементарным взломом сайта.
if (!defined('DATALIFEENGINE')) die("Go fuck yourself!");
$war3Module['title'] = "FAQ по сайту";
// Пример определения переменной имени пользователя
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;
// Конфиг модуля
// Лучше делать массивом - тогда будет проще в нём ориентироваться в дальнейшем и не нужно будет добавлять новые переменные в формирование кеша.
$war3Config = array(
// Имя пользователя
'userName' => $userName,
// ID категории новости
'catId' => !empty($catId) ? $catId : '1',
// Шаблон, через который будет выведено содержимое модуля
'template' => !empty($template) ? $template : 'war3',
// Префикс кеша - довольно важная настройка, если нужно автоматически очищать кеш при определённых событиях (как правило достаточно префикса news)
/**
* Префиксы, наличие одного из которых гарантирует автоматическую очистку кеша при определённых условиях:
* news, rss, comm - при добавлении новости или комментария.
* news, related, tagscloud, archives, calendar, topnews, rss - при добавлении новости.
* comm - при редактировании комментария.
* news, rss - при редактировании новости, при выcтавлении рейтинга
* news, full, comm, rss - при массовом удалении комментариев
* news, full, comm, tagscloud, archives, calendar, rss - при удалении новости
*/
'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'news',
// Суффикс кеша - если задать его, то бдет создаваться отдельные кеши для каждой группы пользователей.
'cacheSuffix' => !empty($cacheSuffix) ? true : false,
);
// Имя кеш-файла.
// Формируется из md5 конфига - это самый оптимальный вариант, т.к. уменьшает количество ненужных операций.
$cacheName = md5(implode('_', $war3Config));
// Присваиваем переменной, выводящей работу модуля в шаблон, значение false перед началом работы модуля.
$war3Module = false;
// Пытаемся подцепить значение из кеша (если кеширование на сайте включено и если модуль создал кеш - будет выведено содержимое кеша)
$war3Module = dle_cache($war3Config['cachePrefix'], $cacheName.$config['skin'], $war3Config['cacheSuffix']);
if (!$war3Module) {
// Если в кеше ничего нет - запускаем работу модуля
if(file_exists(TEMPLATE_DIR.'/'.$war3Config['template'].'.tpl')) {
// Если файл шаблона модуля существует - работаем дальше
// Проверяем определена ли переменная $tpl и класс dle_template
if(!isset($tpl)) {
$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
} else {
$tpl->result['war3Module'] = '';
}
// Загружаем шаблон
$tpl->load_template($war3Config['template'].'.tpl');
// Выполняем нужный нам запрос в БД.
$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '".$war3Config['catId']."' AND autor = '".$war3Config['userName']."'");
// Определяем теги шаблона
$count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';
$tpl->set('{tag_name}', $count);
// Компилим шаблон
$tpl->compile('war3Module');
// Записываем
$war3Module = $tpl->result['war3Module'];
// Записываем результат работы в кеш.
create_cache($war3Config['cachePrefix'], $war3Module, $cacheName.$config['skin'], $war3Config['cacheSuffix']);
$tpl->clear();
} else {
// Если файла с шаблоном модуля нет - скажем об этом юзеру в удобном виде, а не на фоне пустой белой страницы
$war3Module = '<b style="color:red">Отсутствует файл шаблона: '.$config['skin'].'/'.$war3Config['template'].'.tpl</b>';
}
}
// Выводим результат работы модуля
echo $tpl->result['war3Module'];
?>
Ответил: Sander
Подключать модуль надо не инклюдом в engine/init.php (или прочих), а в самом шаблоне:
{include file="engine/modules/имяФайла.php"}