JustWebProgrammer 7 Опубликовано 9 ноября, 2012 (изменено) Добрый день, дамы и господа Забанили прошлый аккуант и решил быть повежливее Сегодня мы рассмотрим настройку модулей для 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 Скоро: Настройка модуля Последние темы с форума Установка WayToPay на StressWeb И много много других интересных и познавательных мануалов Изменено 9 ноября, 2012 пользователем JustWebProgrammer 7 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TpaM 11 Опубликовано 10 ноября, 2012 Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dark444 3 Опубликовано 10 ноября, 2012 не плохо, давай Установка WayToPay на StressWeb Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
aamironx 119 Опубликовано 10 ноября, 2012 спс за мануал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Noobasik24 214 Опубликовано 10 ноября, 2012 спасибо) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты