вопрос
Здравствуйте, пробую писать модуль с вашей помощью, вывел на сайт список забаненых, вот код всего модуля:
Вот файл шаблона:
Всё хорошо, теперь мне нужно сделать общий шаблон, что бы эта таблица выводилась в нем, что бы я написал открывающие и закрывающие теги таблицы, а так же заголовки колонок, подскажите пожалуйста, а то даже не знаю куда копать.
<?php
// Главная строка.
// Без этой строчки любой пользователь может получить прямой доступ к файлу модуля и передать туда свои переменные, что чревато элементарным взломом сайта.
if (!defined('DATALIFEENGINE')) die("Go fuck yourself!");
// Пример определения переменной имени пользователя
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;
// Конфиг модуля
// Лучше делать массивом - тогда будет проще в нём ориентироваться в дальнейшем и не нужно будет добавлять новые переменные в формирование кеша.
$myConfig = array(
// Имя пользователя
'userName' => $userName,
// Шаблон, через который будет выведено содержимое модуля
'template' => !empty($template) ? $template : 'bans',
// Префикс кеша - довольно важная настройка, если нужно автоматически очищать кеш при определённых событиях (как правило достаточно префикса 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('_', $myConfig));
// Присваиваем переменной, выводящей работу модуля в шаблон, значение false перед началом работы модуля.
$w3Module = false;
// Пытаемся подцепить значение из кеша (если кеширование на сайте включено и если модуль создал кеш - будет выведено содержимое кеша)
$w3Module = dle_cache($myConfig['cachePrefix'], $cacheName.$config['skin'], $myConfig['cacheSuffix']);
if (!$w3Module) {
// Если в кеше ничего нет - запускаем работу модуля
if(file_exists(TEMPLATE_DIR.'/w3/'.$myConfig['template'].'.tpl')) {
// Если файл шаблона модуля существует - работаем дальше
// Проверяем определена ли переменная $tpl и класс dle_template
if(!isset($tpl)) {
$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
} else {
$tpl->result['w3Module'] = '';
}
// Загружаем шаблон
$tpl->load_template('/w3/'.$myConfig['template'].'.tpl');
// Выполняем нужный нам запрос в БД.
$row = $db->query("SELECT * FROM oh_bans WHERE id>=1 ORDER BY id DESC LIMIT 0,50");
$tpl->load_template( 'w3/bans.tpl' );
while ($row = $db->get_row()) {
if( $row['server'] ) {
$tpl->set( '[server]', "" );
$tpl->set( '[/server]', "" );
$tpl->set( '{server}', stripslashes( $row['server'] ) );
$tpl->set_block( "'\\[not-server\\](.*?)\\[/not-server\\]'si", "" );
} else {
$tpl->set_block( "'\\[server\\](.*?)\\[/server\\]'si", "" );
$tpl->set( '{server}', "" );
$tpl->set( '[not-server]', "" );
$tpl->set( '[/not-server]', "" );
}
if( $row['name'] ) {
$tpl->set( '[name]', "" );
$tpl->set( '[/name]', "" );
$tpl->set( '{name}', stripslashes( $row['name'] ) );
$tpl->set_block( "'\\[not-name\\](.*?)\\[/not-name\\]'si", "" );
} else {
$tpl->set_block( "'\\[name\\](.*?)\\[/name\\]'si", "" );
$tpl->set( '{name}', "" );
$tpl->set( '[not-name]', "" );
$tpl->set( '[/not-name]', "" );
}
if( $row['ip'] ) {
$tpl->set( '[ip]', "" );
$tpl->set( '[/ip]', "" );
$tpl->set( '{ip}', stripslashes( $row['ip'] ) );
$tpl->set_block( "'\\[not-ip\\](.*?)\\[/not-ip\\]'si", "" );
} else {
$tpl->set_block( "'\\[ip\\](.*?)\\[/ip\\]'si", "" );
$tpl->set( '{ip}', "" );
$tpl->set( '[not-ip]', "" );
$tpl->set( '[/not-ip]', "" );
}
if( $row['date'] ) {
$tpl->set( '[date]', "" );
$tpl->set( '[/date]', "" );
$tpl->set( '{date}', stripslashes( $row['date'] ) );
$tpl->set_block( "'\\[not-date\\](.*?)\\[/not-date\\]'si", "" );
} else {
$tpl->set_block( "'\\[date\\](.*?)\\[/date\\]'si", "" );
$tpl->set( '{date}', "" );
$tpl->set( '[not-date]', "" );
$tpl->set( '[/not-date]', "" );
}
if( $row['gamename'] ) {
$tpl->set( '[gamename]', "" );
$tpl->set( '[/gamename]', "" );
$tpl->set( '{gamename}', stripslashes( $row['gamename'] ) );
$tpl->set_block( "'\\[not-gamename\\](.*?)\\[/not-gamename\\]'si", "" );
} else {
$tpl->set_block( "'\\[gamename\\](.*?)\\[/gamename\\]'si", "" );
$tpl->set( '{gamename}', "" );
$tpl->set( '[not-gamename]', "" );
$tpl->set( '[/not-gamename]', "" );
}
if( $row['admin'] ) {
$tpl->set( '[admin]', "" );
$tpl->set( '[/admin]', "" );
$tpl->set( '{admin}', stripslashes( $row['admin'] ) );
$tpl->set_block( "'\\[not-admin\\](.*?)\\[/not-admin\\]'si", "" );
} else {
$tpl->set_block( "'\\[admin\\](.*?)\\[/admin\\]'si", "" );
$tpl->set( '{admin}', "" );
$tpl->set( '[not-admin]', "" );
$tpl->set( '[/not-admin]', "" );
}
if( $row['reason'] ) {
$tpl->set( '[reason]', "" );
$tpl->set( '[/reason]', "" );
$tpl->set( '{reason}', stripslashes( $row['reason'] ) );
$tpl->set_block( "'\\[not-reason\\](.*?)\\[/not-reason\\]'si", "" );
} else {
$tpl->set_block( "'\\[reason\\](.*?)\\[/reason\\]'si", "" );
$tpl->set( '{reason}', "" );
$tpl->set( '[not-reason]', "" );
$tpl->set( '[/not-reason]', "" );
}
if( $row['expiredate'] ) {
$tpl->set( '[expiredate]', "" );
$tpl->set( '[/expiredate]', "" );
$tpl->set( '{expiredate}', stripslashes( $row['expiredate'] ) );
$tpl->set_block( "'\\[not-expiredate\\](.*?)\\[/not-expiredate\\]'si", "" );
} else {
$tpl->set_block( "'\\[expiredate\\](.*?)\\[/expiredate\\]'si", "" );
$tpl->set( '{expiredate}', "" );
$tpl->set( '[not-expiredate]', "" );
$tpl->set( '[/not-expiredate]', "" );
}
// Компилим шаблон
$tpl->compile('w3Module');
}
// Записываем
$w3Module = $tpl->result['w3Module'];
// Записываем результат работы в кеш.
create_cache($myConfig['cachePrefix'], $w3Module, $cacheName.$config['skin'], $myConfig['cacheSuffix']);
$tpl->clear();
} else {
// Если файла с шаблоном модуля нет - скажем об этом юзеру в удобном виде, а не на фоне пустой белой страницы
$w3Module = '<b style="color:red">Отсутствует файл шаблона: '.$config['skin'].'/'.$myConfig['template'].'.tpl</b>';
}
}
// Выводим результат работы модуля
echo $w3Module;
?>
Вот файл шаблона:
<tr>
<td>{server}</td>
<td>{name}</td>
[group=7]<td>{ip}</td>[/group]
<td>{date}</td>
<td>{gamename}</td>
<td>{admin}</td>
<td>{reason}</td>
<td>{expiredate}</td>
</tr>
Всё хорошо, теперь мне нужно сделать общий шаблон, что бы эта таблица выводилась в нем, что бы я написал открывающие и закрывающие теги таблицы, а так же заголовки колонок, подскажите пожалуйста, а то даже не знаю куда копать.