Для тех кто не понимает совсем, это бесполезно. Но вот кто хоть немного понимает в php/html вот простенькое руководство. на примере редактирования одной из вкладок.
Это не описание как добавить еще одну вкладку со статистикой, это попытка описать принцип работы модуля, работы вкладок, и редактирования таблиц или добавления новых.
Итак, возьмем любую вкладку. Например "Общие Результаты". Для примера добавим в эту таблицу столбик данных о проценте побед игрока.
Вот так в файле
body.php выглядит ее код:
Код: Выделить всё <div id="tabs-2">
<div align="center">
<table id="stat2" class="tablesorter wid" cellspacing="1">
<thead>
<tr>
<th><?php echo $lang['name']; ?></th>
<?php foreach(array_keys($res[$rand_keys]['overall']) as $column){ ?>
<th class="{sorter: 'digit'}"><?php echo $column; ?></th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php foreach($res as $name => $val){ ?>
<tr>
<td><a href="<?php echo $config['base'].$name.'/'; ?>"
target="_blank"><?php echo $name; ?></a></td>
<?php foreach($val['overall'] as $result){ ?>
<td><?php echo $result; ?></td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
Для начала: Сам модуль статистики использует для создания страницы два скрипта, первый (jQuery UI) делает так что-бы таблицы разбивались по вкладкам, и нажав на соотв. вкладку выводилась соотв. таблица.
А второй (Tablesorter) как раз для сортировки таблиц.
Поэтому код разбит на куски:
Код: Выделить всё <div id="tabs-2"> // метка для первого скрипта
<div align="center">
<table id="stat2" class="tablesorter wid" cellspacing="1"> // метка для второго скрипта
Так вот, если первый скрипт автоматически подхватывает информацию, то второму необходимо дополнительно сообщать о каждой новой таблице, в файле
header.phpДля каждой новой таблицы, если вы будете создавать новую, добавлять строку, в которой указан уникальный, не повторяющийся id таблицы:
Код: Выделить всё $("#stat2").tablesorter({sortList:[[0,0]], widgets: ['zebra']});
О структуре html тэгов <table> <thead> <tbody> <th> <td> ищите в гугле. Или вот тут:
http://htmlbook.ru/html/tableЕсли рассматривать код этой вкладки дальше, то мы заметим несколько php циклов (будут выделены в коде).
Эта часть кода выводит заголовки таблицы
Код: Выделить всё <thead>
<tr>
<th><?php echo $lang['name']; ?></th>
<?php foreach(array_keys($res[$rand_keys]['overall']) as $column){ /* начало первого цикла */ ?>
<th class="{sorter: 'digit'}"><?php echo $column; ?></th>
<?php } /* конец первого цикла */ ?>
</tr>
</thead>
Давайте рассмотрим циклы внимательнее, для новичков в php.
Цикл
foeach выводит заголовки, полученные с помощью функции
array_keys. То какие заголовки передаются в таблицу, мы выбираем сами исходя из выделенной части в переменной: $res[$rand_keys]['
overall'].
В переменной (массиве) $res содержится абсолютно вся информация, которой оперирует скрипт. Именно в ней содержится все данные о каждом игроке, о технике, в общем о всем. Структура этой переменной описана в
readme.txt, в архиве с модулем (Да, его надо читать, обязательно. Пока не поймете.). Хотя если правильно, там описана всего повторяющаяся часть переменной $res, для одного игрока (в модуле, в основном цикле, обычно доступна как $val, об этом будет пожже), а сама $res содержит данные для каждого игрока, с повторением указанной структуры для каждого.
В данном случае, переменная $res[$rand_keys]['
overall'] обращается к этой части массива $res (копипаст из
readme.txt), $rand_keys - это имя случайного мэмбера клана, используется только для получения данных о заголовках. Просто представьте что тут так должно быть.
Код: Выделить всё [overall] => Array
(
[Проведено боёв] => 652
[Побед] => 365
[Проигрышей] => 271
[Выжил в битвах] => 297
)
Не обязательно все заголовки таблицы должны быть в цикле, мы можем указывать их вручную, каждый, или добавлять после цикла. Мы так и сделаем, добавим строчку:
Код: Выделить всё <thead>
<tr>
<th><?php echo $lang['name']; ?></th>
<?php foreach(array_keys($res[$rand_keys]['overall']) as $column){ ?>
<th class="{sorter: 'digit'}"><?php echo $column; ?></th>
<?php } ?>
<th>% Побед</th>
</tr>
</thead>
Теперь рассмотрим часть кода выводящую все данные в таблице:
Код: Выделить всё <tbody>
<?php foreach($res as $name => $val){ /* Начало основного цикла */ ?>
<tr>
<td><a href="<?php echo $config['base'].$name.'/'; ?>"
target="_blank"><?php echo $name; ?></a></td>
<?php foreach($val['overall'] as $result){ /* Начало внутреннего цикла */ ?>
<td><?php echo $result; ?></td>
<?php } /* Конец внутреннего цикла */ ?>
</tr>
<?php } /* Начало основного цикла */ ?>
</tbody>
Тут присутсвуют целых два цикла.
Первый foreach($res as $name => $val) - это и есть самый основной цикл, если поискать по файлу body.php то найдете именно такие строки в коде каждой вкладки. Он перебирает данные о каждом пользователе.
Это именно тот цикл с помощью которого мы получаем доступ ко всем необходимым данным по мэмберам в модуле. Если вы хотите выводить новые столбцы в таблице, рассчитывать новые данные для вывода и пр., все это должно происходить в теле данного цикла.
Этот цикл разбивает массив $res на две переменных. Первая, $name, это строка в которой содержится ник мембера клана. Вторая, массив $val, содержит все данные о игроке. Пример $val есть опять-же в
readme.txt, о чем я писал выше.
Т.е. $val['overall']['Проведено боёв'] выдаст количество боев мэмберов клана.
Второй, отмеченный мной как внутренний, цикл foreach($val['overall'] as $result) просто выводит значения из массива
overall. Т.е. если раньше мы выводили заголовки этого массива, теперь мы выводим значение.
Вот после него добавляем дополнительную строку, в которой будет рассчитываться процент побед ($val['overall']['Побед'])/($val['overall']['Проведено боёв']*100). Процент побед округляем до второго знака с помощью round().
Код: Выделить всё <tbody>
<?php foreach($res as $name => $val){ /* Начало основного цикла */ ?>
<tr>
<td><a href="<?php echo $config['base'].$name.'/'; ?>"
target="_blank"><?php echo $name; ?></a></td>
<?php foreach($val['overall'] as $result){ /* Начало внутреннего цикла */ ?>
<td><?php echo $result; ?></td>
<?php } /* Конец внутреннего цикла */ ?>
<td><?php echo round(($val['overall']['Побед'])/($val['overall']['Проведено боёв'])*100,2); ?></td>
</tr>
<?php } /* Конец основного цикла */ ?>
</tbody>
Ну вот где-то вот так.
В качестве подсказки и тренировки, в модуле есть $res[$rand_keys]['rating'], который не выводится во вкладках. Попробуйте создать новую вкладку, на основании кода вот этой вкладки. Необходимо будет изменить всего 3 слова.