Archiv verlassen und diese Seite im Standarddesign anzeigen : Top X Threads auf der Startseite
Auf Wunsch von Silmarillion habe ich mal den Top X Stats Hack modifiziert.
Was macht dieser Hack ?
er stellt die letzten x Themen separat in einer eigenen Tabelle dar.
Anzahl der Themen kann eingestellt werden,
Foren können ausgeschlossen werden,
Zeichenanzahl des Thread-Titels kann eingestellt werden.
Bitte mach vorher ein Backup.
Ich übernehme keine Haftung bei irgendwelchen Fehlern.
@Silmarillion
Du müsstest die Tabelle die ins "FORUMHOME" kommt in deine seitliche Spalte einfügen.
Silmarillion
23.09.2004, 13:04
Dickes Dankeschön, Maddrax! http://www.mainzelahr.de/smile/liebe/kuss.gif
Werde ich gleich mal ausprobieren. :-)
PS: Kannst den Hack ja auch noch auf vb-org veröffentlichen. Vielleicht kann ihn der/die ein-oder andere ja ebenfalls gebrauchen.
mfg
stormblast
23.09.2004, 14:20
Ich bitte um einen Screenshot :o
Silmarillion
23.09.2004, 16:31
Hmm, kann keine offensichtlichen Fehler erkennen. Was genau meinst Du mit "total zerschossen"? :confused:
mfg
Mh... total zerschossen ist anders.. soll ich dir mal ein Bild zeigen? Dann siehst du was zerschossen ist.. :D
Du hast bestimmt nur irgendwo ein <tr> oder <table> vergessen, oder aus versehen gelöscht, übersehen, verschoben. oder wie auch immer. schau mal nach. das funzt ;)
Hi, nach dem ich den hack eingebaut habe, sehen meine Portaleinstellungen total zerschossen aus. was hab ich da denn bitte falsch gemacht ?
Sieht so aus als hättest du die index.php aus dem admincp Ordner bearbeitet.
Für den Hack soll aber die index.php aus dem root Verzeichnes modifiziert werden.
PcFreak
Silmarillion
23.09.2004, 20:17
Ich habe den Hack jetzt einmal in meinem Testboard (Version 3.0.1) eingebaut und bekomme folgende Fehlermeldung:
Database error in vBulletin 3.0.1:
Invalid SQL:
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.dateline
FROM thread AS thread
WHERE thread.forumid NOT IN ()
ORDER BY thread.lastpost DESC LIMIT 0, 10
mysql error: You have an error in your SQL syntax near ')
ORDER BY thread.lastpost DESC LIMIT 0, 10' at line 6
mysql error number: 1064
Hat jemand eine Idee, woran das liegen könnte? :confused:
mfg
Ich habe den Hack jetzt einmal in meinem Testboard (Version 3.0.1) eingebaut und bekomme folgende Fehlermeldung:
Hat jemand eine Idee, woran das liegen könnte? :confused:
mfgErsetze:$excludedforums = "";mit:$excludedforums = "0";
@Benjamini
du musst die root/index.php und nicht admincp/index.php bearbeiten
Silmarillion
24.09.2004, 00:33
@ Mystics: Danke. Manchmal sieht man den Wald vor lauter Bäumen nicht. ;)
Ich habe trotzdem noch ein Problem:
Im vB3-Original Style klappt die Anzeige jetzt einwandfrei. Im anderen Skin (mit Menue links) jedoch nicht. Hier wird kein einziger Beitrag angezeigt. Scheint wohl daran zu liegen, dass ich den Code, welcher normalerweise ins FORUMHOME-Template kommen würde, im "header" -Template untergebracht habe. (dort sind alle Menuepunkte)
Link (http://vbb.webchiller.com/vbb/?styleid=9) zum Testboard.
Was muss ich ändern, damit die Top-X Beiträge korrekt angezeigt werden?
mfg
Was muss ich ändern, damit die Top-X Beiträge korrekt angezeigt werden?
mfgpack das hier mal statt in die index.php ins phpinclude_start - Template
// ### TOP X THREADS ###########################################
$displayrecords = "10"; // Wieviel Themen sollen angezeigt werden?
$excludedforums = "0"; // Welche Foren sollen ausgeschlossen werden. Format "0,5,7"
$threadchars = "30"; // Anzahl der Zeichen bevor ein Titel gekürzt und '...' hinzugefügt wird
$getstats_threads = $DB_site->query("
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.dateline
FROM " . TABLE_PREFIX . "thread AS thread
WHERE thread.forumid NOT IN ($excludedforums)
ORDER BY thread.lastpost DESC LIMIT 0, $displayrecords");
while ($getstats_thread = $DB_site->fetch_array($getstats_threads))
{
$getstats_thread[title] = unhtmlspecialchars($getstats_thread[title]);
if (strlen($getstats_thread[title]) > $threadchars)
{
$getstats_thread[titletrimmed] = substr($getstats_thread[title], 0, strrpos(substr($getstats_thread[title], 0, $threadchars), ' ')) . '...';
}
else
{
$getstats_thread[titletrimmed] = $getstats_thread[title];
}
eval('$stats_threads .= "' . fetch_template('forumhome_stats_thread') . '";');
}
@Benjamini
eigentlich ist ja bei einem Portal der Punkt "letzte Themen" dabei, da bräuchtest du den Hack nicht
Silmarillion
24.09.2004, 11:52
Jap - passt fast...aber eben nur fast, Maddrax! ;)
Schaue Dir mal bitte den Testlink an.
Wie kann ich nun noch das "»" vor jeden Beitrag bekommen und zudem die Schriftgröße anpassen?
Der entsprechende Abschnitt im "header"-Template sieht aktuell wie folgt aus:
<table width="175" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#9B9B9B" colspan="3"><img src='Kompakt/up_letzterbeitrag.gif' width=175 height=20 border=0></td>
</tr>
<tbody id="collapseobj_forumhome_statistics" style="$vbcollapse[collapseobj_forumhome_statistics]">
<tr>
<td class="alt2" width="100%" valign="top">
<table><tr>
<td width="10" bgcolor="#F1F1FF">
</td>
<td width="175" bgcolor="#F1F1FF"><br />
<span class="smallfont">
» $stats_threads
</table></td>
</td>
</tr>
</tbody>
mfg
ändere mal das "forumhome_stats_thread" Template in
» <a href="showthread.php?$session[sessionurl]goto=newpost&t=$getstats_thread[threadid]" title="<phrase 1="$getstats_thread[title]">$vbphrase[go_first_unread_in_thread_x]</phrase>">$getstats_thread[titletrimmed]</a><br />
und ändere die Tabelle von das reinkommt in
<table width="175" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#9B9B9B" colspan="3"><img src='/up_letzterbeitrag.gif' width=175 height=20 border=0></td>
</tr>
<tr>
<td width="10" bgcolor="#F1F1FF"><img src="/images/transparent.gif" width=10 height=1 border="0"></td>
<td bgcolor="#F1F1FF">
<img src="/images/transparent.gif" width=120 height=2 border="0"><br /><br />
<span class="smallfont">
$stats_threads
</span>
</td>
<td width="10" bgcolor="#F1F1FF"><img src="/images/transparent.gif" width=10 height=1 border="0"></td>
</tr>
</table>
Silmarillion
24.09.2004, 13:40
Habe ich gemacht, passt allerdings immer noch nicht wirklich! ;) (siehe Testlink)
Neben dem fehlenden Background, passt jetzt die Anordnung der Pfeile nicht mehr (zu weit links). Zudem greift folgende Variable "$threadchars = "30"; " noch nicht. Die Zeilenumbrüche bei den Threadtiteln sind demzufolge viel zu früh. Wie kann ich das noch mit einbauen?
mfg
du hast das "forumhome_stats_thread" Template nicht mit geändert (Beitrag 17)
Silmarillion
24.09.2004, 14:35
Hmmm...hatte ich, aber Du hast wohl kurz danach den Code noch einmal abgeändert? ^^
Egal - funktioniert jetzt einwandfrei! Erstklassiger Support! Dankeschön, Maddrax! http://www.vbulletin-germany.com/forum/images/icons/icon14.gif
mfg
Bitte, gern geschehen. Ist immer wieder schön wenn was funktioniert. ;)
Hallo,
ein kleiner Fehler im Hack wenn ich den Link direkt von der Top-x box anklicke wird immer auf den ersten nicht auf den letzten Beitrag verwiesen....
Kann ich das irgendwo ändern?
Viele Grüsse
d-talk
Silmarillion
11.01.2005, 00:30
Vielleicht liegt`s ja an der vorgerückten Uhrzeit ;) - ich habe vor ">>" eine Leerzeile eingefügt. Wie kann ich nun erreichen, dass bei einem Zeilenumbruch die zweite Zeile ebenfalls mit einer Leerzeile versehen wird, also bündig zu Zeile 1 beginnt?
» <a href="showthread.php?$session[sessionurl]goto=newpost&t=$getstats_thread[threadid]" title="<phrase 1="$getstats_thread[title]">$vbphrase[go_first_unread_in_thread_x]</phrase>">$getstats_thread[titletrimmed]</a><br />
mfg
Silmarillion
13.01.2005, 13:05
Hat keiner eine Idee?
mfg
Ich habe mir deine Seite nochmal angeschaut und kann dein Problem nicht nachvollziehen.
Silmarillion
13.01.2005, 16:19
Hallo Maddrax,
das "Problem" kannst Du im Testforum (http://vbb.webchiller.com/vbb/index.php?) anschauen. Ich habe die Anzeige etwas mehr nach rechts gesetzt. Nun wird aber bei einem Zeilenumbruch (siehe "Kleine Demonstration...") die zweite Zeile nicht mehr bündig unter die >> gesetzt. (siehe das Wort "zur")
mfg
Bei dir sind zwei
drin.
Dadurch wird der Platz in der Tabelle zu "eng". Vergrößere die Tabelle (alle auf der linken Seite) so das kein Zeilenumbruch stattfindet, oder lösche das zweite Leerzeichen.
Silmarillion
14.01.2005, 12:14
Moin Maddrax,
die 2 Leerzeichen sind ja ganz bewußt gesetzt. ;)
Kurzum: es gibt wohl keine Möglichkeit, mein Vorhaben umzusetzen, da bei einem Zeilenumbruch der Abstand zum Tabellrand offensichtlich nicht definiert werden kann, richtig?
mfg
richtig
die jeweiligen zeilen fangen ja mit den 2 Leerzeichen und bei einem Umbruch gehts ja ganz normal am anfang los, also bei den 2 leerzeichen
du könntest dir evtl mit einer zusätzlichen tabellenspalte helfen die das
»
enthält.
Brain Crusher
16.01.2005, 17:45
Der Hack ist ganz coool, aber wie sieht es aus wenn ich 2x die letzten Themen anzeigen will, einmal die schon gewählten AUSSER Forum 108 und einmal NUR Forum 108 :).
Ich könnte ja 2 Templates bauen, problematisch ist nur, das der hack in der index eingebaut ist und dort vorgegeben ist was ausgeschlossen wird *hmm*.
Silmarillion
31.03.2006, 12:44
Mit Version 3.5.x scheint dieser Hack leider nicht mehr zu funktionieren.
Ich bin wie folgt vorgegangen:
Die index.php wurde hiermit ergänzt/erweitert:
==>Suche:
'forumhome_subforumseparator_post'
==>ersetze mit:
'forumhome_subforumseparator_post',
'forumhome_stats_thread'
Anstatt das php_include_start-Template (3.0.x) zu erweitern, habe ich einen Hook (global_start) installiert:
// ### TOP X THREADS ###########################################
$displayrecords = "10"; // Wieviel Themen sollen angezeigt werden?
$excludedforums = ""; // Welche Foren sollen ausgeschlossen werden. Format "0,5,7"
$threadchars = "30"; // Anzahl der Zeichen bevor ein Titel gekürzt und '...' hinzugefügt wird
$getstats_threads = $DB_site->query("
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.dateline
FROM " . TABLE_PREFIX . "thread AS thread
WHERE thread.forumid NOT IN ($excludedforums)
ORDER BY thread.lastpost DESC LIMIT 0, $displayrecords");
while ($getstats_thread = $DB_site->fetch_array($getstats_threads))
{
$getstats_thread[title] = unhtmlspecialchars($getstats_thread[title]);
if (strlen($getstats_thread[title]) > $threadchars)
{
$getstats_thread[titletrimmed] = substr($getstats_thread[title], 0, strrpos(substr($getstats_thread[title], 0, $threadchars), ' ')) . '...';
}
else
{
$getstats_thread[titletrimmed] = $getstats_thread[title];
}
eval('$stats_threads .= "' . fetch_template('forumhome_stats_thread') . '";');
}
--> Fehlermeldung: Fatal error: Call to a member function on a non-object in /www/htdocs/xxxxxx/vbb/global.php(349) : eval()'d code on line 8
Setzt man obigen Code direkt in die index.php (also ohne ein Plugin zu verwenden), erhält man ebenfalls eine Fehlermeldung: Fatal error: Call to a member function on a non-object in /www/htdocs/xxxxxx/vbb/index.php on line 467
Was muss ich ändern, damit der Top-X Hack auch mit der neuesten vBulletin-Version funktioniert?
Besten Dank im voraus.
mfg
Surviver
02.03.2007, 06:44
Du musst alle '$DB_site' mit $db ersetzen ;)
Silmarillion
02.03.2007, 19:20
Das ist alles?
Ich probiere es einmal...
EDIT: so...GETESTET! Ergebnis:
Fatal error: Call to a member function on a non-object in /homepages/16/XXXXXXXXXXXXX/htdocs/global.php(356) : eval()'d code on line 7
Funktioniert also nicht.
Wäre auch zu schön bzw. einfach gewesen.
mfg
Also bei mir funktioniert das. Vielleicht klappt es bei dir mit $vbulletin->db?
Silmarillion
03.03.2007, 15:21
Hallo Mystics,
seltsam.
Alternativ meinst Du also diesen Weg/Code?
Index.php
==>Suche:
'forumhome_subforumseparator_post'
==>ersetze mit:
'forumhome_subforumseparator_post',
'forumhome_stats_thread',
Hook (global_start) erstellen
// ### TOP X THREADS ###########################################
$displayrecords = "10"; // Wieviel Themen sollen angezeigt werden?
$excludedforums = ""; // Welche Foren sollen ausgeschlossen werden. Format "0,5,7"
$threadchars = "30"; // Anzahl der Zeichen bevor ein Titel gekürzt und '...' hinzugefügt wird
$getstats_threads = $vbulletin->db_site->query("
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.dateline
FROM " . TABLE_PREFIX . "thread AS thread
WHERE thread.forumid NOT IN ($excludedforums)
ORDER BY thread.lastpost DESC LIMIT 0, $displayrecords");
while ($getstats_thread = $vbulletin->db_site->fetch_array($getstats_threads))
{
$getstats_thread[title] = unhtmlspecialchars($getstats_thread[title]);
if (strlen($getstats_thread[title]) > $threadchars)
{
$getstats_thread[titletrimmed] = substr($getstats_thread[title], 0, strrpos(substr($getstats_thread[title], 0, $threadchars), ' ')) . '...';
}
else
{
$getstats_thread[titletrimmed] = $getstats_thread[title];
}
eval('$stats_threads .= "' . fetch_template('forumhome_stats_thread') . '";');
}
Greift bei mir aber leider auch nicht. (siehe vorherige Fehlermeldung)
mfg
Ach, jetzt sehe ich deinen Fehler.Du musst alle '$DB_site' mit $db ersetzen Du hast ja nur $DB mit $db ersetzt. Wie Surviver aber schon sagte, musst du das komplette '$DB_site' mit '$db' ersetzen!
Silmarillion
03.03.2007, 15:48
Hmmm...ok, muss Surviver gestern noch abgeändert haben. Ursprünglich stand da nur $DB in $db ändern.
Egal. Ergebnis:
Datenbankfehler in vBulletin 3.6.4:
Invalid SQL:
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.dateline
FROM thread AS thread
WHERE thread.forumid NOT IN ()
ORDER BY thread.lastpost DESC LIMIT 0, 10;
MySQL-Fehler : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')
ORDER BY thread.lastpost DESC LIMIT 0, 10' at line 5
Fehler-Nr. : 1064
Datum : Saturday, March 3rd 2007 @ 03:42:27 PM
Und bei Dir funktioniert der Hack? Auch mit Version 3.6.X?
mfg
muss Surviver gestern noch abgeändert habenNein, weil nach 15 Minuten eine Änderungsnotiz erscheinen würde :)
Für diesen DB-Fehler habe ich dir bereits 2004 eine Lösung in diesem Thema genannt :)
http://www.vbulletin-germany.com/forum/showpost.php?p=80953&postcount=8
Silmarillion
03.03.2007, 21:52
Nein, weil nach 15 Minuten eine Änderungsnotiz erscheinen würde :)Das ist wohl wahr. Ergo lag der Fehler eindeutig bei mir.
Für diesen DB-Fehler habe ich dir bereits 2004 eine Lösung in diesem Thema genannt :)
http://www.vbulletin-germany.com/forum/showpost.php?p=80953&postcount=8Erschreckend, was Du noch so alles weißt, Mystics. :eek:
Naja, wahrscheinlich liest Du nur einfach mehr...und vor allem gründlicher als ich! ;)
Anmerkung: der User Onur hat mir freundlicherweise den Hack (http://www.vbhacks-germany.org/showpost.php?p=61343&postcount=17) entsprechend modifiziert. Wer also interessiert ist, der weiß jetzt, wo er ein entsprechend funktionierendes Produkt (im wahrsten Sinne des Wortes ^^) bekommt.
Trotzdem Danke an Surviver und natürlich auch an Mystics. :)
mfg
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.