Stressweb < Подробная Настройка Модулей
Описание
Сегодня мы рассмотрим настройку модулей для StressWeb (я работаю сейчас с StressWeb 13. Лицензия)
Итак, с чего мы начнем?
Модуль Top PvP.
Предисловие:
Во многих шаблонах (да практически во всех) сейчас блок Top PvP выводит Имя персонажа, Количество убийств в PvP, Количество убийств в PK.
Дело в том, что по стандарту, модуль TopPvP в StressWeb не выводит количество убийств в PK. Сейчас мы это исправим
Приступим:
- Заходим на FTP сайта (ну или открываем на своем компьютере папку со StressWeb'ом)
- Открываем папку module
- Открываем с помощью блокнота (редактируем) файл pvptop.php
- Видим такую картину
<?php
/**
* STRESS WEB
* @author S.T.R.E.S.S.
* @copyright 2008 - 2012 STRESS WEB
* @version 13
* @web http://stressweb.ru
*/
if ( !defined("STRESSWEB") )
die( "Access denied..." );
/******************************
* НАСТРОЙКА МОДУЛЯ
******************************/
$T_ENABLE = false; // вкл/выкл модуль
$T_COUNT = 5; // количество результатов
$T_SID = 1; // ID сервера с которого выводить результаты
$T_CACHE = 2; // время кеширования в минутах, 0 - отключить
/******************************
* ВЫВОД РЕЗУЛЬТАТОВ
******************************/
if ( !$T_ENABLE )
$tpl->SetResult( 'pvptop' );
else {
$pvptop = $controller->GetCache( 'mod_pvptop' );
if ( $pvptop )
$tpl->SetResult( 'pvptop', $pvptop );
else {
$db->gdb( $T_SID );
$T_SEL = $gdb[$T_SID]->query( "SELECT `char_name`,`pvpkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}" );
if ( $gdb[$T_SID]->num_rows($T_SEL) > 0 ) {
$T_N = 1;
while ( $T_RESULT = $gdb[$T_SID]->fetch($T_SEL) ) {
$tpl->LoadView( 'pvptop' );
$tpl->Block( 'main', false );
$tpl->Block( 'item' );
$tpl->Set( 'n', $T_N );
$tpl->Set( 'char_name', $T_RESULT['char_name'] );
$tpl->Set( 'pvp', $T_RESULT['pvpkills'] );
$tpl->Build( 'pvptop_item' );
$T_N++;
}
$tpl->LoadView( 'pvptop' );
$tpl->Block( 'item', false );
$tpl->Block( 'main' );
$tpl->Set( 'item', $tpl->GetResult('pvptop_item', true) );
$tpl->Build( 'pvptop' );
} else
$tpl->SetResult( 'pvptop' );
if ( $T_CACHE > 0 ) {
$controller->SetCache( 'mod_pvptop', $tpl->GetResult('pvptop'), $T_CACHE );
}
}
}
?>
Человек, который хотя-бы не много знаком с Php и основным синтаксисом MySQL, поймет, что теперь делать. Но большинство людей этого не знают.
Итак. Для начала настроим сам модуль (путем выставления значений переменным)
$T_ENABLE = false; // вкл/выкл модуль $T_COUNT = 5; // количество результатов $T_SID = 1; // ID сервера с которого выводить результаты $T_CACHE = 2; // время кеширования в минутах, 0 - отключить
Теперь исправим запрос, что-бы их базы данных вытаскивало кроме Имени персонажа и Количества убийств в PvP, еще и Количество убийств в PK
В коде:
$T_SEL = $gdb[$T_SID]->query( "SELECT `char_name`,`pvpkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}" );
А точнее в самом запросе:
SELECT `char_name`,`pvpkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}
Мы видим, что из таблицы characters забираются данные из столбцов char_name (имя персонажа) и pvpkills (количество убийств в PvP).
Теперь давайте добавим в запрос доставание данных из столбца pkkills (количество убийств в PK)
Делается это достаточно просто
В запросе:
SELECT `char_name`,`pvpkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}
После:
`pvpkills`
Добавим:
,`pkkills`
И получим:
SELECT `char_name`,`pvpkills`,`pkkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}
Теперь давайте добавим в скрипт замену тэга {pk} на количество убийств в PK.
В коде:
$tpl->LoadView( 'pvptop' ); $tpl->Block( 'main', false ); $tpl->Block( 'item' ); $tpl->Set( 'n', $T_N ); $tpl->Set( 'char_name', $T_RESULT['char_name'] ); $tpl->Set( 'pvp', $T_RESULT['pvpkills'] ); $tpl->Build( 'pvptop_item' ); $T_N++;
После:
$tpl->Set( 'char_name', $T_RESULT['char_name'] ); $tpl->Set( 'pvp', $T_RESULT['pvpkills'] );
Добавим:
$tpl->Set( 'pk', $T_RESULT['pkkills'] );
Получим:
$tpl->LoadView( 'pvptop' ); $tpl->Block( 'main', false ); $tpl->Block( 'item' ); $tpl->Set( 'n', $T_N ); $tpl->Set( 'char_name', $T_RESULT['char_name'] ); $tpl->Set( 'pvp', $T_RESULT['pvpkills'] ); $tpl->Set( 'pk', $T_RESULT['pkkills'] ); $tpl->Build( 'pvptop_item' ); $T_N++;
Теперь сохраняем скрипт и радуемся.
Готовый скрипт:
<?php /** * STRESS WEB * @author S.T.R.E.S.S. * @copyright 2008 - 2012 STRESS WEB * @version 13 * @web http://stressweb.ru */ if ( !defined("STRESSWEB") ) die( "Access denied..." ); /****************************** * НАСТРОЙКА МОДУЛЯ ******************************/ $T_ENABLE = true; // вкл/выкл модуль $T_COUNT = 10; // количество результатов $T_SID = 1; // ID сервера с которого выводить результаты $T_CACHE = 2; // время кеширования в минутах, 0 - отключить /****************************** * ВЫВОД РЕЗУЛЬТАТОВ ******************************/ if ( !$T_ENABLE ) $tpl->SetResult( 'pvptop' ); else { $pvptop = $controller->GetCache( 'mod_pvptop' ); if ( $pvptop ) $tpl->SetResult( 'pvptop', $pvptop ); else { $db->gdb( $T_SID ); $T_SEL = $gdb[$T_SID]->query( "SELECT `char_name`,`pvpkills`,`pkkills` FROM `characters` ORDER BY `pvpkills` DESC LIMIT {$T_COUNT}" ); if ( $gdb[$T_SID]->num_rows($T_SEL) > 0 ) { $T_N = 1; while ( $T_RESULT = $gdb[$T_SID]->fetch($T_SEL) ) { $tpl->LoadView( 'pvptop' ); $tpl->Block( 'main', false ); $tpl->Block( 'item' ); $tpl->Set( 'n', $T_N ); $tpl->Set( 'char_name', $T_RESULT['char_name'] ); $tpl->Set( 'pvp', $T_RESULT['pvpkills'] ); $tpl->Set( 'pk', $T_RESULT['pkkills'] ); $tpl->Build( 'pvptop_item' ); $T_N++; } $tpl->LoadView( 'pvptop' ); $tpl->Block( 'item', false ); $tpl->Block( 'main' ); $tpl->Set( 'item', $tpl->GetResult('pvptop_item', true) ); $tpl->Build( 'pvptop' ); } else $tpl->SetResult( 'pvptop' ); if ( $T_CACHE > 0 ) { $controller->SetCache( 'mod_pvptop', $tpl->GetResult('pvptop'), $T_CACHE ); } } } ?>
Тэги:
{char_name} - имя персонажа
{pvp} - количество убийств в PvP
{pk} - количество убийств в PK
Мануал написал собственноручно - JustWebProgrammer. Специально для L2Maxi.Ru
Рекомендуемые комментарии
Комментариев нет