Top5 - /TopXXX-Hack |
|
Top5 - /TopXXX-Hack |
Beitrag Nr.: 1 |
Huhu,
ich hatte diese Anfrage schon mal hier drin; sie ist leider dem kleinen Crash zum Opfer gefallen. Da aber sowieso noch niemand geantwortet hatte, frage ich nun hier nochmal.
Ich habe die Top5-Anzeige von X&Y (glaube ich) in Benutzung.
Nun habe ich in einigen Foren gesehen, daß dort die User wahlweise einstellen können, ob sie die 5 neuesten Beiträge, User, Poster usw. angezeigt bekommen als die letzten 5, 10, 20, 30 ....
Ist das eine Erweiterung des Hacks oder kann/muß man da selber was umschreiben?
Wäre schön, wenn mir jemand Auskunft geben könnte
__________________
|
|
18.11.2009 21:57 |
|
|
haumi
Boardbetreiber
[meine Galerie]
Dabei seit: 06.06.2009
Beiträge: 3.441
Herkunft: NRW
Postid: 1726
|
|
Hi Silly,
wenn es der folgende Hack ist, das ist im ACP keine Einstellung möglich.
Top 5 Stats Idee by TouchingVirus - Angepasst und modifiziert für wbb2.3 by XundY
Da musst du die index.php öffnen und zwischen den beiden nächsten Zeilen suchen :
Top 5 Stats Idee by TouchingVirus - Angepasst und modifiziert für wbb2.3 by XundY
>>>>>>>>>> hier suchen>>>>>>>>>>>>
/* #### Top 5 own threads by Sanity #### */
$posts5 = $db->query("SELECT userid,username,userposts FROM bb".$n."_users ORDER BY userposts DESC LIMIT 5");
und
$user = $db->query("SELECT userid,userposts,username,regdate FROM bb".$n."_users WHERE activation='1' ORDER BY regdate DESC LIMIT 5");
und
$result = $db->query("SELECT boardid, topic, threadid, replycount FROM bb".$n."_threads WHERE starterid = '".$wbbuserdata['userid']."' ORDER BY lastposttime DESC LIMIT 0,5");
hier ersetzt du jeweils die 5 mit der Anzahl die du gerne haben möchtest.
eventuell muss denn auch die Beschriftung im Board angepasst werden.
Sag denn Bescheid ob es der Hack ist und ob die Änderungen klappen, oder ob es doch ein anderer Hack ist.
LG
haumi
__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.
|
|
18.11.2009 22:57 |
|
|
|
haumi, tut mir leid, daß ich nun meinen vorigen Beitrag gelöscht habe, während du eine Antwort dazu geschrieben hast. Das kommt davon, wenn man nebenher noch den Telefonhörer in der Hand hat ;-)
Ich glaube auch, irgendwie haben wir ein wenig aneinander vorbeigeschrieben oder ich habe es in meinem ersten Beitrag nicht besonders erklärt.
So verstehe ich auch halt gleich deine Angaben über die entsprechenden Änderungen in der index.php
Leider ist es aber nicht das was ich will.
Mir geht es eigentlich darum, daß jeder USER für sich selbst entscheiden kann, ob er 5, 10, 20 .... neueste Beiträge, Mitglieder, Topposter usw. angezeigt haben möchte.
Bei mir im Forum ist es z.B. so, daß eigentlich die Top 5 ausreichen - aber da sind dann auch User, die kommen morgens um 4-5 Uhr rein und sind dann arbeiten. Wenn sie dann abends um 18 Uhr wieder ins Forum kommen, orientieren sie sich erstmal anhand der Top-Anzeige. Es wird dann oft was überlesen, weil ja nur 5 neue Beiträge angezeigt werden. Diese User würden sich wünschen, daß sie abends 20 letzte Beiträge angezeigt bekommen.
Da aber denen, die sich fast den ganzen Tag im Forum aufhalten, zuviel ist, weil dadurch das eigentliche Forum etwas weiter unten anfängt, würde ich das gerne jedem User selbst überlassen, wieviele Top xxx er sich anzeigen lassen will.
Ich habe hier mal ein Beispiel (fuzzy's Arcade Vip Club), daß es so etwas gibt. Nur brauche ich Fuzzy nicht danach zu fragen, denn er benutzt wbbLite 1.0.2 - passt also so nicht für 2.3.6
__________________
|
|
19.11.2009 21:53 |
|
|
haumi
Boardbetreiber
[meine Galerie]
Dabei seit: 06.06.2009
Beiträge: 3.441
Herkunft: NRW
Postid: 1742
|
|
Ich hoffe das ich die Lösung habe.
Ich habe jetzt bei mir top20 eingestellt und bekomme es auch angezeigt.
Schaut mal was ihr angezeigt bekommt-
Die Einstellung wird solange beibehalten, bis man sie durch eine neue Auswahl ersetzt.
Was ist zu tun?
Führe im ACP unter SQL Abfragen folgende Abfrage durch:
ALTER TABLE bb1_users ADD COLUMN `top5` INT NOT NULL DEFAULT '5' ;
Öffne per FTP die Datei index.php und suche den Anfang der Top5 - hier ist das:
/* ############## Top 5 Statistik Mainpage Start ############## */
füge darunter ein:
code: |
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:
|
if(isset($_REQUEST['wahl'])) {
switch($_REQUEST['wahl']) {
case '5':
$wahl=5;
break;
case '10':
$wahl=10;
break;
case '15':
$wahl=15;
break;
case '20':
$wahl=20;
break;
default:
$wahl='5';
}
$updatewahl = $db->unbuffered_query("UPDATE bb".$n."_users SET top5 = '".$wahl."' WHERE userid = '".$wbbuserdata['userid']."' LIMIT 1");
$wahl1=$db->unbuffered_query("SELECT top5 FROM bb".$n."_users WHERE userid = '".$wbbuserdata['userid']."' LIMIT 1");
while($ds = mysql_fetch_object($wahl1)) {
$wahl = $ds->top5;
}
}
if($wbbuserdata['userid']!='0') {
$wahl1=$db->unbuffered_query("SELECT top5 FROM bb".$n."_users WHERE userid = '".$wbbuserdata['userid']."' LIMIT 1");
while($ds = mysql_fetch_object($wahl1)) {
$wahl = $ds->top5;
}
}
else
$wahl ='5'; |
|
Ersetze in den drei folgenden Zeilen jeweils den Eintrag (hier ist es die 5) hinter LIMIT mit $wahl
$posts5 = $db->query("SELECT userid,username,userposts FROM bb".$n."_users ORDER BY userposts DESC LIMIT 5");
und
$user = $db->query("SELECT userid,userposts,username,regdate FROM bb".$n."_users WHERE activation='1' ORDER BY regdate DESC LIMIT 5");
und
$result = $db->query("SELECT boardid, topic, threadid, replycount FROM bb".$n."_threads WHERE starterid = '".$wbbuserdata['userid']."' ORDER BY lastposttime DESC LIMIT 0,5");
und speichere die Datei wieder
Nun öffen im ACP unter Templates bearbeiten das Template (hier) indes_topfive und ersetze die Zeile
<td class="tabletitle" align="center"><span class="normalfont"><b><u>» $master_board_name «</u> </b></span></td>
mit
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
<if($wbbuserdata['userid'] ==0)><then>
<td class="tabletitle" align="center"><span class="normalfont"><b><u>» $master_board_name «</u> </b></span></td>
</then>
<else>
<form action="index.php"method="get">
<table cellpadding="4" cellspacing="1" border="0" style="width:{$style['tableinwidth']}" class="tableinborder">
<tr>
<td class="tabletitle" align="left"><span class="normalfont">Topanzeige:
<input type="radio" name="wahl" value="5" checked>5
<input type="radio" name="wahl" value="10">10
<input type="radio" name="wahl" value="15">15
<input type="radio" name="wahl" value="20">20
<input type="submit" name="send" value="Senden"></span></td></span></td>
</tr>
</table>
</form>
</else></if> |
|
speichern und das solls gewesen sein.
Auch hier gilt wie immer:
alle zu ändernden templates und php-Dateien vorher sichern,
damit man bei einem Fehler den alten Zustand wieder herstellen kann!!
Eine Garantie wird auch nicht übernommen.
Wenn etwas unklar sein sollte bitte hier fragen bevor man etwas falsch macht.
Es wird auch Hilfe gegeben wenn etwas nicht so ganz geklappt hat.
Urheber ist haumi - aber jeder kann es frei verwenden und nach belieben abändern.
LG
haumi
__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.
|
|
20.11.2009 08:37 |
|
|
ersatzspieler unregistriert
|
|
hi wie mach ich das bei
/* ############## TOP 5 oder 10 Hack © by BlackPower############## */
LG : Blackjubel
|
|
22.11.2009 00:40 |
|
|
ersatzspieler unregistriert
|
|
Besten dank
LG Blackjubel
|
|
22.11.2009 14:36 |
|
|
|
Klingt interressant, muss ich auch mal testen
__________________
|
|
25.11.2009 06:12 |
|
|
|
Was gilt denn für die Topliste von Shorty ?
__________________
|
|
25.11.2009 19:51 |
|
|
|
haumi, ich wollte ja eigentlich auch mal das komplette Script schicken - aber mir fehlt immo einfach die Zeit ... sorry!
Andererseits ist das ja auch noch nicht das was ich suche. Ich will ja nicht im ACP einstellen ob TOP 5 oder TOP 20 usw. im Forum zu sehen sind.
Dann geht das Grummeln der User los: Dem einen reichen 5 Anzeigen, der nächste möchte 20 ... stelle ich also 20 ein, meckern die die nur 5 oder 10 möchten und umgekehrt.
Also lasse ich vorläufig erstmal alles bei den TOP 5 und hoffe, daß ich irgendwann und irgendwo mal sowas finde, daß ich den Usern die Anzeige nicht über ACP vorschreibe sondern sie selber aussuchen können wieviel sie angezeigt haben wollen.
Vielleicht hast du ja selbst mal irgendwann Zeit und Lust sowas auszutüfteln
__________________
|
|
25.11.2009 20:24 |
|
|
|
Zitat: |
Original von haumi
Schau doch einfach mal hier im Board die Top5 an.
Das ist doch das was du suchst, oder etwa nicht?
LG
haumi |
|
Jaaaaaa gaynau
(sorry habe ich erst auf deine Meldung in der SB gesehen)
Das ist ja super!!!!!!
Was ist zu tun?
__________________
|
|
25.11.2009 20:35 |
|
|
|
Also ich bin zu blöd, denn die angegeben Zeilen zum Einfügen bzw. Ersetzen finde ich nicht.
Das hier ist halt die Angabe zum Hack:
/* ############## Top 5 Stats Idee by TouchingVirus - Angepasst und modifiziert für wbb2.3 by XundY ############## */
hier mal der Top5-Teil aus der index.php:
/* ############## Top 5 Statistik Start ############## */
if ($top5show == 1 && ($top5showgast == 1 || $wbbuserdata['userid'])){
function getBoards()
{
global $db,$n,$wbbuserdata,$boardcache,$top5excludedboards;
if(isset($top5excludedboards) && $top5excludedboards != ''){
//$result=$db->query("SELECT boardid,boardorder,parentid,parentlist FROM bb".$n."_boards WHERE password='' AND invisible!='2' AND boardid NOT IN(".$top5excludedboards.") ORDER BY parentid ASC, boardorder ASC");
$result=$db->query("SELECT boardid FROM bb".$n."_boards WHERE password = '' AND invisible != '2' AND boardid NOT IN(".$top5excludedboards.")");
} else {
//$result=$db->query("SELECT boardid,boardorder,parentid,parentlist FROM bb".$n."_boards WHERE password='' AND invisible!='2' ORDER BY parentid ASC, boardorder ASC");
$result=$db->query("SELECT boardid FROM bb".$n."_boards WHERE password = '' AND invisible != '2'");
}
$boardpermissions=getPermissions();
$boardids='0';
if ( $wbbuserdata['userid'] == '') {
while($row=$db->fetch_array($result)) {
$can_view_board = false;
$can_enter_board = false;
$can_read_thread = false;
if (isset($boardpermissions[$row['boardid']]['can_view_board']) && $boardpermissions[$row['boardid']]['can_view_board'] == 1){
$can_view_board = true;
}
if (isset($boardpermissions[$row['boardid']]['can_enter_board']) && $boardpermissions[$row['boardid']]['can_enter_board'] == 1){
$can_enter_board = true;
}
if (isset($boardpermissions[$row['boardid']]['can_read_thread']) && $boardpermissions[$row['boardid']]['can_read_thread'] == 1){
$can_read_thread = true;
}
if ($can_view_board == true && $can_enter_board == true && $can_read_thread == true) {
$boardids.=",".$row['boardid'];
}
}
} else {
while($row=$db->fetch_array($result)) {
$can_view_board = false;
$can_enter_board = false;
$can_read_thread = false;
if (!isset($boardpermissions[$row['boardid']]['can_view_board']) || $boardpermissions[$row['boardid']]['can_view_board'] == 1){
$can_view_board = true;
}
if (!isset($boardpermissions[$row['boardid']]['can_enter_board']) || $boardpermissions[$row['boardid']]['can_enter_board'] == 1){
$can_enter_board = true;
}
if (!isset($boardpermissions[$row['boardid']]['can_read_thread']) || $boardpermissions[$row['boardid']]['can_read_thread'] == 1){
$can_read_thread = true;
}
if ($can_view_board == true && $can_enter_board == true && $can_read_thread == true) {
$boardids.=",".$row['boardid'];
}
}
}
return $boardids;
}
if ( isset($top5view) && is_numeric($top5view) ){
$top5limit = $top5view;
} else {
$top5limit = 5;
}
// Start Top Poster
$posts5 = $db->query("SELECT userid,username,userposts FROM bb".$n."_users ORDER BY userposts DESC LIMIT ".$top5limit);
$posts5name = '';
$posts5post = '';
while ($posts5top = $db->fetch_array($posts5)){
$posts5name .= '» <a href="profile.php?userid='.$posts5top['userid'].'&sid='.$session['hash'
].'">'.$posts5top['username'].'</a><br />';
$posts5post .= $posts5top['userposts'].'<br />';
}
// Ende Top Poster
// Start letzte Mitglieder
$user = $db->query("SELECT userid,userposts,username,regdate FROM bb".$n."_users WHERE activation='1' ORDER BY regdate DESC LIMIT ".$top5limit);
$username = '';
$userposts = '';
$userdays = '';
while ($usertop = $db->fetch_array($user)){
$username .= '» <a href="profile.php?userid='.$usertop['userid'].'&sid='.$session['hash'].
'">'.$usertop['username'].'</a><br />';
$userposts .= $usertop['userposts'].'<br />';
$tage = round( (mktime() - $usertop['regdate'])/86400 );
if($tage == 1){
$userdays .= $tage.' Tag<br />';
} else {
$userdays .= $tage.' Tagen<br />';
}
//$userdays .= round( (mktime() - $usertop['regdate'])/86400 ).' Tagen<br />';
}
// Ende letzte Mitglieder
// Start letzte Beiträge
$pop = $db->query("SELECT bb".$n."_threads.threadid, bb".$n."_threads.boardid as parentid, bb".$n."_threads.topic, bb".$n."_threads.lastposttime, bb".$n."_threads.replycount, bb".$n."_threads.views, bb".$n."_users.userid, bb".$n."_users.username FROM bb".$n."_threads LEFT JOIN bb".$n."_users ON (bb".$n."_users.userid=bb".$n."_threads.lastposterid) LEFT JOIN bb".$n."_boards ON (bb".$n."_boards.boardid=bb".$n."_threads.boardid) WHERE bb".$n."_threads.boardid IN (".getBoards().") ORDER BY bb".$n."_threads.lastposttime DESC LIMIT ".$top5limit);
$popthread = '';
$lastposter = '';
$popviews = '';
$popposts = '';
while ($poptop = $db->fetch_array($pop)){
if(strlen($poptop['topic']) > '37') $poptop['topic'] = "".substr($poptop['topic'], 0, 34)."...";
$popthread .= '» <a href="thread.php?goto=lastpost&threadid='.$poptop['threadid'].'&sid
='.$session['hash'].'">'.$poptop['topic'].'</a><br />';
$lastposter .= '<a href="profile.php?userid='.$poptop['userid'].'&sid='.$session['hash'].'
">'.$poptop['username'].'</a><br />';
$popviews .= $poptop['views'].'<br />';
$popposts .= $poptop['replycount'].'<br />';
}
// Ende letzte Beiträge
if ( isset($top5view2) && is_numeric($top5view2) ){
$top5limit = $top5view2;
} else {
$top5limit = 1;
}
// Start Top Themen
$pop1title = '';
$pop1views = '';
$pop1 = $db->query("SELECT bb".$n."_threads.topic, bb".$n."_threads.threadid, bb".$n."_threads.views, bb".$n."_threads.boardid FROM bb".$n."_threads LEFT JOIN bb".$n."_boards ON (bb".$n."_boards.boardid=bb".$n."_threads.boardid) ORDER BY bb".$n."_threads.views DESC LIMIT ".$top5limit);
if ($top5limit == 1){
while ($pop1top = $db->fetch_array($pop1)){
$pop1title = '<a href="thread.php?threadid='.$pop1top['threadid'].'&boardid='.$pop1top['
boardid'].'&sid='.$session['hash'].'">'.$pop1top['topic'].'</a>';
$pop1views = $pop1top['views'];
}
} else {
while ($pop1top = $db->fetch_array($pop1)){
$pop1title .= '<a href="thread.php?threadid='.$pop1top['threadid'].'&boardid='.$pop1top['
boardid'].'&sid='.$session['hash'].'">'.$pop1top['topic'].'</a><br />';
$pop1views .= $pop1top['views'].'<br />';
}
}
// Ende Top Themen
// Start Top Bewertung
$voted = $db->query("SELECT bb".$n."_threads.topic, bb".$n."_threads.threadid, bb".$n."_threads.votepoints/bb".$n."_threads.voted AS vote, bb".$n."_threads.boardid FROM bb".$n."_threads LEFT JOIN bb".$n."_boards ON (bb".$n."_boards.boardid=bb".$n."_threads.boardid) ORDER BY vote DESC LIMIT ".$top5limit);
$votedthread = '';
$votedrating = '';
if ($top5limit == 1){
while ($votedtop = $db->fetch_array($voted)){
$votedthread = '<a href="thread.php?threadid='.$votedtop['threadid'].'&boardid='.$votedtop
['boardid'].'&sid='.$session['hash'].'">'.$votedtop['topic'].'</a>';
$votedrating = $votedtop['vote'];
}
} else {
while ($votedtop = $db->fetch_array($voted)){
$votedthread .= '<a href="thread.php?threadid='.$votedtop['threadid'].'&boardid='.$votedtop
['boardid'].'&sid='.$session['hash'].'">'.$votedtop['topic'].'</a><br />';
$votedrating .= $votedtop['vote'].'<br />';
}
}
// Ende Top Bewertung
// Start Template
eval ("\$top5threadstats = \"".$tpl->get("index_topfive")."\";");
// Ende Template
} else {
$top5threadstats = '';
}
/* ############## Top 5 Statistik Ende ############## */
__________________
|
|
25.11.2009 22:47 |
|
|
|
so, und hier noch das Template, was bei mir so heißt bzw. so aussieht:
<!-- Top Five Start -->
<table cellpadding="4" cellspacing="1" border="0" style="width:{$style['tableinwidth']}" class="tableinborder">
<tr class="tablea">
<td >
<table cellpadding="4" cellspacing="1" border="0" style="width:100%" class="tableinborder" >
<tr class="tabletitle">
<td align="left" colspan="7" ><span class="smallfont"><b>Top Five</b></span></td></tr>
<tr>
$topownthreads
<td class="tablea" style="width:25%" valign="top" align="left">
<table>
<tr><td colspan="2">
<span class="smallfont">
<b>{$lang->items['LANG_START_TOPFIVE_POSTER']}</b></span>
<hr style="width:100%" noshade="noshade" size="0" />
</td></tr>
<tr>
<td style="width:100%" align="left"><span class="smallfont">{$lang->items['LANG_START_USERNAME']}</span></td>
<td align="right" style="width:300px"><span class="smallfont">{$lang->items['LANG_START_POSTS']}:</span></td></tr>
<tr>
<td style="width:100%" align="left" nowrap="nowrap"><span class="smallfont"><b>$posts5name</b></span></td>
<td align="right" style="width:300px"><span class="smallfont"><b>$posts5post</b></span></td></tr></table></td>
<td class="tablea" style="width:25%" valign="top" align="left">
<table>
<tr><td colspan="2">
<span class="smallfont"><b>{$lang->items['LANG_START_NEWEST_MEMBERS']}</b></span>
<hr style="width:100%" noshade="noshade" size="0" />
</td></tr>
<tr>
<td style="width:100%" align="left"><span class="smallfont">{$lang->items['LANG_START_USERNAME']}</span></td>
<td align="right" style="width:300px"><span class="smallfont">{$lang->items['LANG_START_POSTS']}:</span></td></tr>
<tr >
<td style="width:100%" align="left" nowrap="nowrap"><span class="smallfont"><b>$newusername</b></span></td>
<td align="right" style="width:300px"><span class="smallfont"><b>$userposts</b></span></td></tr></table></td>
<td class="tablea" style="width:40%" valign="top" colspan="4">
<table>
<tr><td colspan="3">
<span class="smallfont"><b>{$lang->items['LANG_START_LASTPOSTS']}</b></span>
<hr style="width:100%" noshade="noshade" size="0" />
</td></tr>
<tr>
<td style="width:100px" align="left"><span class="smallfont">{$lang->items['LANG_START_THREADTITLE']}:</span></td>
<td style="width:40%" align="left"><span class="smallfont">{$lang->items['LANG_START_USERNAME']}</span></td>
<td align="right" style="width:300px"><span class="smallfont">{$lang->items['LANG_START_HITS']}:</span></td></tr>
<tr>
<td style="width:65%" align="left" nowrap="nowrap"><span class="smallfont"><b>$popthread</b></span></td>
<td style="width:35%" align="left"><span class="smallfont"><b>$lastposter</b></span></td>
<td align="right" style="width:300px"><span class="smallfont"><b>$popviews</b></span></td></tr></table></td></tr>
<tr>
<td class="tableb" colspan="7">
<table cellpadding="1" cellspacing="0" border="0" style="width:100%">
<tr>
<td class="tableb">
<span class="smallfont"><b>{$lang->items['LANG_START_TOP_TOPIC']}</b> <b>$pop1title</b> | <b>$pop1views</b> {$lang->items['LANG_START_HITS']}.</span></td>
<td class="tableb" align="right">
<span class="smallfont"><b>{$lang->items['LANG_START_TOPVOTED']}</b> <b>$votedthread</b> | <b>$votedrating</b> {$lang->items['LANG_START_TOPFIVE_VOTES']}</span></td></tr></table></td></t
r></table></td></tr>
</table>
<!-- Top Five Ende -->
__________________
|
|
25.11.2009 22:50 |
|
|
|
Hi
würde mich auch interessieren, den bei XundY Top 5 sind
die Zeilen von haumi nicht zu finden.
Gruß katze2ooo
__________________
|
|
05.04.2011 21:09 |
|
|
|