PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Top X Threads auf der Startseite



Maddrax
23.09.2004, 12:57
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

h75
23.09.2004, 17:00
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 ;)

Andree
23.09.2004, 17:02
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

Mystics
23.09.2004, 22:52
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";

Maddrax
23.09.2004, 23:39
@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

Maddrax
24.09.2004, 11:31
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

Maddrax
24.09.2004, 13:17
ändere mal das "forumhome_stats_thread" Template in



&raquo;&nbsp;<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

Maddrax
24.09.2004, 14:25
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

Maddrax
24.09.2004, 14:38
Bitte, gern geschehen. Ist immer wieder schön wenn was funktioniert. ;)

d-talk
28.12.2004, 11:40
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?


&nbsp;&raquo;&nbsp;<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

Maddrax
13.01.2005, 13:53
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

Maddrax
14.01.2005, 08:24
Bei dir sind zwei


&nbsp;

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

Maddrax
14.01.2005, 14:44
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


&nbsp;&nbsp;&raquo;&nbsp;

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, 13: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

Mystics
03.03.2007, 13:43
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

Mystics
03.03.2007, 15:36
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

Mystics
03.03.2007, 21:20
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