Was ist hier los?
BenediktRB.de

Forenstatistik in einem anderen Template ausgeben

Man liest immer öfter die Frage: „Wie kann ich die Statistik in das Menü machen, bei mir geht das nicht.“ Dies ist nämlich nicht eine einfache Templateänderung, sondern auch eine Änderung in den php-Dateien. Daher rate ich erst mal ein Backup zu machen, falls ihr diese Änderung der Anzeige vorhabt.

Also es ist so: Die Startseite hat eine eigene PHP Datei (index.php). In dieser werden die Statistiken generiert und ausgelesen, also es wird praktisch das gemacht, was wichtig dafür ist, dass diese Informationen ausgegeben werden können.

Wenn man jetzt einmal nachdenkt, könnte man schon darauf kommen, was zu tun ist.

Es gibt eine PHP-Datei, die da heißt: global.php. Die Informationen die diese Datei beinhaltet kann in jedem Template ausgegeben werden.
Ergo muss man einfach den Code von der index.php in die global.php schieben?
Im Prinzip ja, aber noch ein wenig mehr. Was genau zu tun ist, wird nachfolgend beschrieben.


Wie man hier sehen kann, habe ich ein linkes Menü in das die Statistik eingebunden werden soll. Diese Templateänderung (von dem Menü) könnt ihr hier finden:

Zunächst einmal fängt man mit dem HTML Teil an:

Öffne dein Index Template (ACP >> Templates bearbeiten >> Templatepack per Drop Down auswählen >> Index >> Template bearbeiten)

Dort geht man ganz nach unten und sucht nach diesem Code-Abschnitt:

<if($showstats==1)> <then> <tr> <td class="tabletitle" align="left" colspan="<if($hide_modcell==0)><then>6</then><else>5</else></if>"><span class="smallfont"><b>{$lang->items['LANG_START_STATISTIC']}</b></span></td> </tr> <tr> <td class="tableb" align="center"><img src="{$style['imagefolder']}/stats.gif" alt="" border="0" /></td> <td colspan="<if($hide_modcell==0)><then>5</then><else>4</else></if>" class="tablea" align="left"><span class="smallfont">{$lang->items['LANG_START_STATISTIC_MEMBERS']} $stats[usercount] | {$lang->items['LANG_START_STATISTIC_THREADS']} $stats[threadcount] | {$lang->items['LANG_START_STATISTIC_POSTS']} $stats[postcount] ({$lang->items['LANG_START_STATISTIC_AVERAGE']} $postperday {$lang->items['LANG_START_STATISTIC_POSTPERDAY']})<br /> {$lang->items['LANG_START_STATISTIC_NEWESTMEMBER']} <a href="profile.php?userid=$stats[lastuserid]{$SID_ARG_2ND}">$stats[username]</a>.</span></td> </tr> </then> </if>

Dies wird gelöscht.

Das Template Index wird abgespeichert und man geht in das Header Template (bzw. in das Template, wo die Statistik ausgegeben werden soll).

Dort wird erst mal der Code eingefügt und zwar in eine neue Zeile. Wenn du meine obig genannte Templateänderung benutzt geht dies so:

Du suchst ganz unten: </table> und fügst darüber das ein:

<if($showstats==1)> <then> <tr> <td align="left" class="tabletitle"><span class="smallfont"><b>Statistik</b></span></td> </tr> <tr> <td class="tablea"> <span class="smallfont"><b> {$lang->items['LANG_START_STATISTIC_MEMBERS']} $stats[usercount] | {$lang->items['LANG_START_STATISTIC_THREADS']} $stats[threadcount] | {$lang->items['LANG_START_STATISTIC_POSTS']} $stats[postcount] ({$lang->items['LANG_START_STATISTIC_AVERAGE']} $postperday {$lang->items['LANG_START_STATISTIC_POSTPERDAY']})<br /> {$lang->items['LANG_START_STATISTIC_NEWESTMEMBER']} <a href="profile.php?userid=$stats[lastuserid]{$SID_ARG_2ND}">$stats[username]</a>. </b></span> </td> </tr> </then> </if>

(Falls der Code woanders ausgegeben werden soll, muss er gegebenenfalls angepasst werden.)

Du speicherst dann das Header Template ab.

Dann müsste deine Index-Ansicht so aussehen:


Soweit kommen die meisten meist noch. Aber man sieht eben nur Striche, Klammern und ein Punkt.

Dies wird mithilfe der PHP-Code Änderungen verbessert.

Also man geht in das Hauptverzeichnis des wBBs und kopiert erst mal die Dateien: index und global.php, um ein Backup zu haben. Anschließend werden beide Dateien geöffnet.

Du gehst in die index.php und suchst:

$index_stats = ''; /* ############## STATS ############## */ if ($showstats == 1) { $stats = $db->query_first("SELECT s.*, u.username FROM bb".$n."_stats s LEFT JOIN bb".$n."_users u ON(u.userid=s.lastuserid)"); $stats['username'] = htmlconverter($stats['username']); $installdays = (time() - $installdate) / 86400; if ($installdays < 1) $postperday = $stats['postcount']; else $postperday = $stats['postcount'] / $installdays; $postperday = number_format($postperday, 2, $lang->get("LANG_GLOBAL_DEC_POINT"), $lang->get("LANG_GLOBAL_THOUSANDS_SEP")); if ($stats['usercount'] >= 1000) $stats['usercount'] = number_format($stats['usercount'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP")); if ($stats['threadcount'] >= 1000) $stats['threadcount'] = number_format($stats['threadcount'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP")); if ($stats['postcount'] >= 1000) $stats['postcount'] = number_format($stats['postcount'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP")); }
Dies wird ausgeschnitten (!) also, das es nicht mehr in der index.php steht.

Dann wird die index.php gespeichert und man geht in die global.php.

Man sucht dort: /** default templates **/ und fügt den Code den man gerade aus der index ausgeschnitten hat darüber wieder ein.

Wenn man sich jetzt mal die Startseite anguckt sieht es schon mal so aus:


Fehlen also noch die Sprachvariabeln.

Man geht wiederum in die index.php und sucht ganz oben nach:

$lang->load('START');

Diese Zeile wird ausgeschnitten und die Datei abgespeichert.

Nun muss man die global.php wieder öffnen und dies suchen:

/** default templates **/ $header_pms = ''; $header_acp = '';
Darunter wird nun die Zeile eingesetzt: $lang->load('START');

Abspeichern, auf die Startseite gehen, neu laden, sich freuen.