Forum : ModuleTitel : NewBB-Plus: Direktes Anspringen von Posts© 2004-2012 www.exv2.de http://www.exv2.de
URL dieser Diskussion
http://www.exv2.de/modules/newbb_plus/viewtopic.php?topic_id=820&forum=11
|
FrankP :
| 14.12.2003 09:06 |
Und schon wieder ich.
Ich hätte schwören können dass es hier im Supportforum geht und ich die Funktion durch Customizing wieder rausgekickt habe. Ich habe es aber gerade hier versucht, und da klappert es auch nicht. Daher mal ein Aufruf an alle
Ich möchte gerne z.B. bei Suchergebnissen direkt den Link zum jeweiligen Post anbieten, und wenn der Benutzer diesen klickt, auch die Anzeige dieses Posts in den Focus bringen.
Im Link steht ja die genaue PostID drin, z.B. verweist http://www.e-xoops.de/modules/newbb_plus/viewtopic.php?topic_id=788&forum=8#4119 auf einen Post in der Mitte einer Diskussion, beim Aufrufen wird aber an den Anfang oder das Ende des Threads gesprungen, je nachdem welche Einstellung der Benutzer hat.
Das ganze soll auch funktionieren, wenn der Anzeigemodus auf FLAT steht, da es bei uns den Threaded Mode überhaupt nicht geben wird....
Irgendwie muss allso ein Focus auf den Post mit der PostID aus der URL bzw, dem HTTP_POST gesetzt werden, nur wie das gehen soll ist mir noch unklar.
Wie immer, alle Art von Anregungen sind willkommen 
Dankeschön und bye
Frank |
|
|
FrankP :
| 14.12.2003 10:06 |
Aaaalso:
um einen Post direkt anspringen zu können, muss der Parameter "&start=" mit der dazugehörigen Seite an die URL mit übergeben werden.
Die Anker (Sprungziele) sind bereits in der Seite drin.
Aber wie zur Hölle bekomme ich den gültigen Wert für Start heraus, also auf welcher Seite eines Threads der gewünschte Post zu finden ist.......
Na ja, mal weiterdiggen..... |
|
|
bama :
| 14.12.2003 10:39 |
moin Frank,
bei mir funktionierts wenn ich auf deinen Link im vorherigen Post klicke wird genau der richtige Post mit Anker angezeigt bei mir ist eingestellt: neueste zuerst
angezeigt bzw. der Anker (fokus) ist auf dem zweiten Post
Cu Hans |
|
|
FrankP :
| 14.12.2003 10:54 |
Salut Hans,
hmmmmm. Verstehe ich das richtig, wenn du bei dir im Browser die URL aus meinem ersten Post eingibst, springt das System automatisch genau auf deinen Post ("Problem gelöst, aber ich werde trotzdem mal schauen....."), der auf der zweiten Seite des Threads im mittleren Bereich liegt?
Das geht bei mir nur wenn ein &start=20 mit in der URL steht, dann wird der Anker sofort angesprungen.
Ich versteh' nur Bahnhof....Oder liegt's an meiner Einstellung "älteste zuerst", aber das wäre dann ja auch nicht richtig, oder?
Grmbl. Also weitersuchen....
Vielleicht noch einmal erläutern: Bitte nutze mal die Suche (e-xoops Suche, nicht Forumssuche!) und such nach dem String "Ich werde trotzdem". In den Ergebnissen wird dein Post im Thread textarea gefunden. Wenn du das Suchergebnis anklickst, wo springt er hin? Bei mir und Claudia auf den Thread, eben weil Start nicht definiert ist. Springt er bei dir genau auf den Post?
Danke dir !!!
Frank
[ Geändert von FrankP an 14.12.2003 11:10 ] |
|
|
FrankP :
| 14.12.2003 12:48 |
Haut mir in's Gesicht, ich glaube ich habs:
In der /newbb_plus/include/search.inc.php
austauschen von Code: if($permissions['can_view'] == 1) { $ret[$i]['image'] = "images/info.gif"; $ret[$i]['link'] = "viewtopic.php?topic_id=".$myrow['topic_id']."&forum=".$myrow['forum_id']."#".$myrow['post_id']."";
in
Code: if($permissions['can_view'] == 1) { // Starte Modifizierung durch Frank // Grund: Direkter Ansprung eines Posts durch Übergabe des $start-Parameters // Nun muss der $start parameter gesetzt werden, umd die gefundenen Posts // direkt anspringen zu können $sql2 = "SELECT COUNT(*) FROM ".$bbTable['posts']." WHERE topic_id =".$myrow['topic_id']." AND post_id <= ".$myrow['post_id']." "; $result2 = $db->query($sql2); list($total_posts)= $db->fetch_row($result2); // Nun nachsehen, wieviele Posts per Page in diesem Forum angezeigt werden $sql3 = "SELECT posts_per_page from ".$bbTable['forums']." WHERE forum_id = ".$myrow['forum_id']." "; $result3 = $db->query($sql3); list($posts_per_page)=$db->fetch_row($result3); //Jetzt die Seite ausrechnen, auf der der Post zu finden ist.... $start = floor($total_posts / $posts_per_page) * $posts_per_page; //prüfen ob Teilbar durch $posts_per_page, wenn ja einmal abziehen weil bei 0 //angefangen wird zu zählen... if ($total_posts % $posts_per_page == 0) { $start = $total_posts - $posts_per_page; } //jetzt noch abfangen dass $start negativ ist, (geht nur wenn auf der 1. Seite //gefunden if ($start < 0) $start = 0;
$ret[$i]['image'] = "images/info.gif"; $ret[$i]['link'] = "viewtopic.php?topic_id=".$myrow['topic_id']."&forum=".$myrow['forum_id']."&start=".$start."#".$myrow['post_id'].""; // Ende Modifizierung durch Frank
Dann wird in der Ergebisseite von search.php der Post mit dem passenden Start-Parameter übergeben, so daß wirklich genau der Post angesprungen wird, der gefunden wurde.
*Stolz*
Ich bin mir zwar irgendwie sicher, dass ich etwas vergessen habe, aber .....
[ Geändert von FrankP an 14.12.2003 13:35 ] |
|
|
FrankP :
| 14.12.2003 15:15 |
Und das gleiche bezieht sich auf die Ergebnisseite newbb_plus/search.php:
Wenn auch dort an Stelle des Verweises auf den Thread direkt auf den gefundenen Post gesprungen werden soll, in der search.php folgende Änderungen vornehmen:
Aus Code: $query = " SELECT u.uid, f.forum_id, p.topic_id, u.uname, p.post_time, t.topic_title, f.forum_name FROM ".$bbTable['posts']." p, ".$db->prefix("users")." u, ".$bbTable['forums']." f, ".$bbTable['topics']." t";
wird
Code: $query = " SELECT u.uid, f.forum_id, p.topic_id, u.uname, p.post_time, t.topic_title, f.forum_name, p.post_id FROM ".$bbTable['posts']." p, ".$db->prefix("users")." u, ".$bbTable['forums']." f, ".$bbTable['topics']." t";
und aus
Code: while ($row = $db->fetch_array($result)) {
echo " <tr class='bg1' align='center'>
wird
Code: while ($row = $db->fetch_array($result)) { // Starte Modifizierung durch Frank // Grund: Direkter Ansprung eines Posts durch Übergabe des $start-Parameters // Nun muss der $start parameter gesetzt werden, umd die gefundenen Posts // direkt anspringen zu können $sql2 = "SELECT COUNT(*) FROM ".$bbTable['posts']." WHERE topic_id =".$row['topic_id']." AND post_id <= ".$row['post_id']." "; $result2 = $db->query($sql2); list($total_posts)= $db->fetch_row($result2); // Nun nachsehen, wieviele Posts per Page in diesem Forum angezeigt werden $sql3 = "SELECT posts_per_page from ".$bbTable['forums']." WHERE forum_id = ".$row['forum_id']." "; $result3 = $db->query($sql3); list($posts_per_page)=$db->fetch_row($result3); //Jetzt die Seite ausrechnen, auf der der Post zu finden ist.... $start = floor($total_posts / $posts_per_page) * $posts_per_page; //prüfen ob Teilbar durch $posts_per_page, wenn ja einmal abziehen weil bei 0 //angefangen wird zu zählen... if ($total_posts % $posts_per_page == 0) { $start = $total_posts - $posts_per_page; } //jetzt noch abfangen dass $start negativ ist, (geht nur wenn auf der 1. Seite //gefunden if ($start <0 ) $start = 0; // Ende Modifizierung durch Frank
echo " <tr class='bg1' align='center'>
dann noch den href ändern von
Code: <td align='left'><a href='viewtopic.php?topic_id=".$row['topic_id']."&forum=".$row['forum_id']."'>". $myts->makeTboxData4Show($row['topic_title']) . "</a></td>
in
Code: <td align='left'><a href='viewtopic.php?topic_id=".$row['topic_id']."&forum=".$row['forum_id']."&start=".$start."#".$row['post_id']."'>". $myts->makeTboxData4Show($row['topic_title']) . "</a></td>
Dann springt er beim anklicken eines Titels in der Suchergebnisliste direkt auf den gefundenen Post..
bye Frank |
|
|
|