|
Dieses Thema wurde als erledigt markiert.  |
Heutige TOP Poster wbb2.3.6 |
Steinadler
Routinier
 

Dabei seit: 21.09.2008
Beiträge: 323
Herkunft: Essen
Teilnehmer des EM-Tippspiels
|
Level: 32 [?]
Erfahrungspunkte: 431.495
Nächster Level: 453.790
 |
|
Heutige TOP Poster V1.0 für das wbb2.3.6
Beschreibung:
Dieser Hack fügt auf der Startseite eine kleine Statistik ein, welche die tagesaktuellen TOP-Poster auflistet.
In den Klammern werden ebenfalls die tagesaktuellen Beiträge der jeweiligen TOP Poster numerisch mit aufgeführt. Diese sind auch zur search.php verlinkt, so das man diese separat aufrufen kann.
Zusätzlich wird noch das Avatar der Gratulanten als Miniausgabe angezeigt.
Wird kein Beitrag während 24h geschrieben, ist die Spalte leer und somit nicht sichtbar.
Danksagung:
Mein großer Dank geht wieder einmal an Viktor, der die Datenbankabfrage so umgebaut hat, das alle notwendigen Variablen in nur 1 Statement bereitgestellt werden.
Haftungsausschluß
Dieser Hack wird auf eigene Gefahr eingebaut/genutzt.
Ich übernehme keinerlei Haftung für direkte und/oder indirekte Schäden, die durch die Installation und/oder den Gebrauch entstehen.
Bitte vor dem Einbau ein Backup der Datenbank und der zu ändernden Dateien anfertigen.
Download:
Dieser Hack darf nur auf:
Steinadlers Bastelstübchen
Testumgebung-Online
Viktor's Supportboard
angeboten werden!
Voraussetzungen:
Ein wbb2.3.6
zu ändernde Dateien:
index.tpl
index.php
neue Dateien:
index_topposterbit.tpl
index_topposter_avatar.tpl
Die Einbauanleitung bezieht sich auf ein fast originales und unverbasteltes wbb2.3.6
Einbauanleitung:
suche in der index.php:
| php: |
1:
|
require('./acp/lib/class_useronline.php'); |
|
füge darunter ein:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
|
//** Heutige TOP Poster by Steinadler Anfang **//
unset($index_topposterbit);
$curtime = time();
$date_today = getdate($curtime);
$time_today=mktime(0,0,0,$date_today[mon],$date_today[mday],$date_today[year]);
$result=$db->query("SELECT
p.userid,
count(p.postid) AS anzahl,
u.*,
u.avatarid,
a.avatarextension,
a.width,
a.height,
u.useronlinegroupid,
g.useronlinemarking
FROM bb".$n."_posts p
LEFT JOIN bb".$n."_users u USING (userid)
LEFT JOIN bb".$n."_groups g ON (u.useronlinegroupid=g.groupid)
LEFT JOIN bb".$n."_avatars a ON (a.avatarid=u.avatarid)
WHERE p.posttime > $time_today AND p.posttime <= $curtime GROUP BY p.userid ORDER BY anzahl DESC");
WHILE ($topposter_today = $db->fetch_array($result)) {
$topposter_today['username'] = htmlconverter($topposter_today['username']);
$index_topposter_name = sprintf($topposter_today['useronlinemarking'], $topposter_today['username']);
//** Avatar Anfang **//
if($topposter_today['avatarid']) {
$avatarname="images/avatars/avatar-$topposter_today[avatarid].$topposter_today[avatarextension]";
$avatarwidth="25px";
$avatarheight="25px";
eval ("\$useravatar = \"".$tpl->get("index_topposter_avatar")."\";");
}
elseif($topposter_today['avatarid'] ==0 && $wbbuserdata['showavatars']==1) {
$avatarname="images/noavatar.gif";
$avatarwidth="25px";
$avatarheight="25px";
eval ("\$useravatar = \"".$tpl->get("index_topposter_avatar")."\";");
}
//** Avatar Ende **//
//** Template Ausgabe **//
if (isset($index_topposterbit)) eval("\$index_topposterbit .= \"".$tpl->get("index_topposterbit")."\";");
else eval("\$index_topposterbit = \"".$tpl->get("index_topposterbit")."\";");
}
//** Heutige TOP Poster by Steinadler Ende **// |
|
index.php fertig!
suche im index.tpl:
| Quellcode |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
<if($showuservisited==1 && $wbbuserdata['userid']!=0)><then>
<tr>
<td class="tabletitle" colspan="<if($hide_modcell==0)><then>6</then><else>5</else></if>" align="left"><span class="smallfont"><b>{$lang->items['LANG_START_WWH_TITLE']}</b></span></td>
</tr>
<tr>
<td rowspan="2" class="tableb" align="center"><img src="{$style['imagefolder']}/online.gif" alt="" title="" /></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_WWH_DESC']}</span></td>
</tr>
<tr>
<td class="tablea" colspan="<if($hide_modcell==0)><then>5</then><else>4</else></if>" align="left"><span class="smallfont"><if($wwh_useronlinebit)><then>$wwh_useronlinebit</then><else>$nbsp;</else></if></span></td>
</tr>
</then>
</if>
|
|
füge darunter ein:
| Quellcode |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
<if(isset($index_topposterbit) && $wbbuserdata['userid']!=0)>
<then>
<tr>
<td class="tabletitle" colspan="<if($hide_modcell==0)><then>6</then><else>5</else></if>" align="left"><span class="smallfont"><b>Heutige TOP Poster</b></span></td>
</tr>
<tr>
<td class="tableb" align="center"><img src="{$style['imagefolder']}/online.gif" alt="" title="" border="0" /></td>
<td class="tablea" colspan="<if($hide_modcell==0)><then>5</then><else>4</else></if>" align="left"><span class="smallfont">$index_topposterbit</span></td>
</tr>
</then>
</if>
|
|
Ich habe es bei mir unter der WerWarDa Spalte eingebaut.
Selbstverständlich kann jeder eine Einbaustelle seiner Wahl nehmen.
Die beiden Templates aus dem Anhang importieren und cachen!
Tipps:
Der Hack zeigt standardmäßig alle Poster des Tages an, absteigend nach Postinganzahl.
Um z.B. nur die 5 besten TOP Poster anzeigen zu lassen, macht man folgendes:
suche in der index.php:
| php: |
1:
|
WHERE p.posttime > $time_today AND p.posttime <= $curtime GROUP BY p.userid ORDER BY anzahl DESC"); |
|
ersetze durch:
| php: |
1:
|
WHERE p.posttime > $time_today AND p.posttime <= $curtime GROUP BY p.userid ORDER BY anzahl DESC LIMIT 5"); |
|
Ich habe das ohne eine Sprachvariable zu installieren in das index.tpl eingebaut.
Wer ganz korrekt sein möchte, und für das hier:
| Quellcode |
1:
|
<b>Heutige TOP Poster</b> |
|
eine Sprachvariable haben möchte, macht bitte folgendes:
1.
Im ACP Sprachvariable erstellen
2.
Kategorie: start
3.
Sprachvariable: LANG_START_INDEX_TOPPOSTER
4.
Textinhalt: Heutige TOP Poster
5.
Speichern
suche im index.tpl:
| Quellcode |
1:
|
<b>Heutige TOP Poster</b> |
|
ersetze durch:
| Quellcode |
1:
|
<b>{$lang->items['LANG_START_INDEX_TOPPOSTER']}</b> |
|
Der Hack ist für Gäste standardmäßig nicht! sichtbar.
Sollen Gäste die Spalte sehen können, ist folgendes zu tun:
suche im index.tpl:
| Quellcode |
1:
|
<if(isset($index_topposterbit) && $wbbuserdata['userid']!=0)> |
|
ersetze durch:
| Quellcode |
1:
|
<if(isset($index_topposterbit))> |
|
Das war es schon
Und so sieht es aus:
| Dateianhang: |
Topposter_2.3.6 .zip (513 Byte, 15 mal heruntergeladen) » Dateianhang nur für registrierte Mitglieder verfügbar
|
Steinadler hat dieses Bild (verkleinerte Version) angehängt:
__________________
|
|
22.07.2011 12:40 |
|
|
Steinadler
Routinier
 

Dabei seit: 21.09.2008
Beiträge: 323
Herkunft: Essen
Teilnehmer des EM-Tippspiels
|
Level: 32 [?]
Erfahrungspunkte: 431.495
Nächster Level: 453.790
Themenstarter
 |
|
Heutige TOP Poster wbb2.3.6 V 1.1
Das Update auf die Version 1.1 beinhaltet folgende Punkte:
1.
Fährt man jetzt mit der Maus über das Avatar, wird ein kleiner Text zum Avatar des Gratulanten eingeblendet.
2.
Jetzt erscheinen die Gastposter nicht mehr in der TOP Poster Spalte.
3.
Über den Postlink werden jetzt nur noch die Postings des Tages aufgelistet, und nicht mehr wie vorher alle Postings der jeweiligen Gratulanten.
Einbauanleitung:
Die Version 1.0 muss natürlich eingebaut sein!
suche in der index.php:
| php: |
1:
|
WHILE ($topposter_today = $db->fetch_array($result)) { |
|
füge darunter ein:
| php: |
1:
|
if ($topposter_today['userid']) { |
|
suche weiter:
| php: |
1:
2:
3:
4:
5:
6:
|
elseif($topposter_today['avatarid'] ==0 && $wbbuserdata['showavatars']==1) {
$avatarname="images/noavatar.gif";
$avatarwidth="25px";
$avatarheight="25px";
eval ("\$useravatar = \"".$tpl->get("index_topposter_avatar")."\";");
} |
|
ersetze durch:
| php: |
1:
2:
3:
4:
5:
6:
7:
|
elseif($topposter_today['avatarid'] ==0 && $wbbuserdata['showavatars']==1) {
$avatarname="images/noavatar.gif";
$avatarwidth="25px";
$avatarheight="25px";
eval ("\$useravatar = \"".$tpl->get("index_topposter_avatar")."\";");
}
} |
|
suche in der search.php:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
|
/* userposts */
if ($_GET['action'] == 'user') {
if (!isset($_GET['userid'])) error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
$boardids = '';
list($boardcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_boards");
$result = $db->query("SELECT boardid FROM bb".$n."_boards WHERE password='' AND boardid IN (0".getSearchableBoards().")");
if ($db->num_rows($result) < $boardcount) {
while ($row = $db->fetch_array($result)) {
if ($boardids != '') $boardids .= ','.$row['boardid'];
else $boardids = $row['boardid'];
}
if (!$boardids) redirect($lang->get("LANG_GLOBAL_ERROR_SEARCHNORESULT"), "search.php" . $SID_ARG_1ST);
}
$savepostids = '';
$userid = intval($_GET['userid']);
$result = $db->unbuffered_query("SELECT p.postid FROM bb".$n."_posts p, bb".$n."_threads t WHERE p.threadid=t.threadid AND p.visible=1 AND p.userid='$userid'
".(($boardids) ? ("AND t.boardid IN ($boardids)") : ("")));
while ($row = $db->fetch_array($result)) $savepostids .= ','.$row['postid'];
if (!$savepostids) redirect($lang->get("LANG_GLOBAL_ERROR_SEARCHNORESULT"), "search.php" . $SID_ARG_1ST);
$result = $db->query_first("SELECT searchid FROM bb".$n."_searchs WHERE searchhash = '".getQueryHash($savepostids, 1, 'lastpost', 'desc', $wbbuserdata['userid'], $REMOTE_ADDR)."'");
if ($result['searchid']) {
header("Location: search.php?searchid=".$result['searchid'].$SID_ARG_2ND_UN);
exit();
}
$db->query("INSERT INTO bb".$n."_searchs (searchhash,postids,showposts,sortby,sortorder,searchtime,userid,ipaddress)
VALUES ('".getQueryHash($savepostids, 1, 'lastpost', 'desc', $wbbuserdata['userid'], $REMOTE_ADDR)."','$savepostids','1','lastpost','desc','".time()."','$wbbuserdata[userid]','$REMOTE_ADDR')");
$searchid = $db->insert_id();
header("Location: search.php?searchid=$searchid".$SID_ARG_2ND_UN);
exit();
} |
|
füge darunter ein:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
|
//** Postausgabe Heutige TOP Poster Anfang **//
if($_GET['action']=="user_today") {
if (!isset($_GET['userid'])) error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
$curtime = time();
$date_today = getdate($curtime);
$time_today=mktime(0,0,0,$date_today[mon],$date_today[mday],$date_today[year]);
$boardids = '';
list($boardcount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_boards");
$result = $db->query("SELECT boardid FROM bb".$n."_boards WHERE password='' AND boardid IN (0".getSearchableBoards().")");
if ($db->num_rows($result) < $boardcount) {
while ($row = $db->fetch_array($result)) {
if ($boardids != '') $boardids .= ','.$row['boardid'];
else $boardids = $row['boardid'];
}
if (!$boardids) redirect($lang->get("LANG_GLOBAL_ERROR_SEARCHNORESULT"), "search.php" . $SID_ARG_1ST);
}
$savepostids="";
$userid=intval($_GET['userid']);
$result=$db->query("SELECT p.postid FROM bb".$n."_posts p, bb".$n."_threads t WHERE p.threadid=t.threadid AND p.visible=1 AND p.userid='$userid' AND p.posttime > '$time_today' AND p.posttime <= '$curtime'
".(($boardids) ? ("AND t.boardid IN ($boardids)") : ("")));
while ($row = $db->fetch_array($result)) $savepostids .= ','.$row['postid'];
if (!$savepostids) redirect($lang->get("LANG_GLOBAL_ERROR_SEARCHNORESULT"), "search.php" . $SID_ARG_1ST);
$result=$db->query_first("SELECT searchid FROM bb".$n."_searchs WHERE postids='$savepostids' AND showposts='1' AND sortby='lastpost' AND sortorder='desc' AND userid='$wbbuserdata[userid]' AND ipaddress='$REMOTE_ADDR'");
if($result['searchid']) {
header("Location: search.php?searchid=".$result['searchid'].$SID_ARG_2ND_UN);
exit();
}
$db->query("INSERT INTO bb".$n."_searchs (searchid,postids,showposts,sortby,sortorder,searchtime,userid,ipaddress)
VALUES (NULL,'$savepostids','1','lastpost','desc','".time()."','$wbbuserdata[userid]','$REMOTE_ADDR')");
$searchid=$db->insert_id();
header("Location: search.php?searchid=$searchid".$SID_ARG_2ND_UN);
exit();
}
//** Postausgabe Heutige TOP Poster Ende **// |
|
Templates im ACP bearbeiten:
ersetze den Inhalt vom index_topposter_avatar.tpl mit folgendem Code:
| Quellcode |
1:
|
<img src="$avatarname" width="$avatarwidth" height="$avatarheight" border="0" alt="$avatarname" title="Avatar von $topposter_today[username]" /> |
|
Speichern!
ersetze den Inhalt vom index_topposterbit.tpl mit folgendem Code:
| Quellcode |
1:
|
<if(isset($index_topposterbit))><then>, </then></if>$useravatar <a href="profile.php?userid=$topposter_today[userid]{$SID_ARG_2ND}"><b>$index_topposter_name</b></a> <a href="search.php?action=user_today&userid=$topposter_today[userid]{$SID_ARG_2ND}">($topposter_today[anzahl])</a> |
|
Speichern!
Das war es auch schon
__________________
|
|
07.08.2011 11:13 |
|
|
|
Views heute: 7.536 | Views gestern: 22.601 | Views gesamt: 11.223.912 |
|