Seite 1 von 1

[GELÖST] Letzte Seite eines mehrseitigen Threads anspringen

Verfasst: 21.12.2007 00:31
von gsxfan
Hallo.

Bin gerade dabei mir zusammenzustricken, wie man per Mausklick auf eine Zeile in der Threadübersicht eines Forums auf die letzte Seite eines mehrseitigen Beitrags springen kann.
Wenn da also in der Auflistung der Beiträge z.B. steht:

Wichtig: Telefonliste
[ Gehe zu Seite: 1 ... 4, 5, 6 ]

...dann möchte ich mit Klick auf die Zeile die Seite 6 direkt anspringen.
Egal wo der Klick in der Zeile stattfindet, ich habe mir in der viewforum_body.tpl das hier eingebaut:

Code: Alles auswählen

	<td class="{topicrow.ROW_CLASS}" width="100%" onMouseOver="this.style.backgroundColor='#d3d3d3'; this.style.cursor='default';" onMouseOut="this.style.backgroundColor='{ROW_CLASS}';" onclick="window.location.href='{topicrow.U_VIEW_TOPIC}'" ><span class="gensmall"><b>{topicrow.NEWEST_POST_IMG}{topicrow.TOPIC_TYPE}<a href="{topicrow.U_VIEW_TOPIC}" class="gensmall">{topicrow.TOPIC_TITLE}</a></b></span><span class="gensmall"><br />
Wenn man nun mit der Maus auf eine Zeile in der Threadübersicht fährt, färbt sich diese Grau (#d3d3d3) ein und wenn man nun egal wo in der Tabellenzeile klickt, öffnet sich mit onclick="window.location.href='{topicrow.U_VIEW_TOPIC}'" der Thread, aber auf der ersten Seite mit dem ersten Beitrag.

Nun möchte ich aber, dass anstelle von {topicrow.U_VIEW_TOPIC} so etwas wie Last_Page angegeben werden kann.

Dazu habe ich mir schon einige Gedanken gemacht. Eine Variable dieses Inhaltes gibt es anscheinend nicht, die letzte Seite eines mehrseitigen Threads muss also ermittelt werden.
Dazu habe ich hier eine SQL-Abfrage gefunden (Danke an gn#36):

Code: Alles auswählen

SELECT topic_id, CEIL(count(*)/(15)) AS seite FROM phpbb_posts GROUP BY topic_id
Das funktioniert auch, listet mir zu jeder topic_id die Anzahl der Seiten auf. In einer php-Datei sieht der Aufruf so aus:

Code: Alles auswählen

$abfrage="SELECT topic_id, CEIL(count(*)/(15)) AS seite FROM phpbb_posts GROUP BY topic_id";
$ergebnis = mysql_db_query("test", $abfrage, $verbindung);
while (list($topic_id,$seite) = mysql_fetch_row($erg)) {
                echo "Die Topic_ID $topic_id  hat $seite Seiten<BR>\n";
}
Funktioniert auch. Und nun fehlt mir die Idee, wie ich das einbaue, damit ich anstelle von {topicrow.U_VIEW_TOPIC} etwas anderes eintragen kann.

Dazu hab ich mir die viewtopic.php angeschaut, darin werden die Variablen für der tpl-Datei erzeugt und gefüllt.
Wie stricke ich das nun dort hinein? Dazu fehlt mir ein bisschen der Ansatz.

Uwe

Verfasst: 21.12.2007 12:55
von Seimon
Die letzte Seite gibt es nicht aber das letzte Posting:

öffne

viewforum.php

finde

Code: Alles auswählen

$view_topic_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
ersetze durch

Code: Alles auswählen

$view_topic_url = append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $topic_rowset[$i]['topic_last_post_id']) . '#' . $topic_rowset[$i]['topic_last_post_id'];
willst du nur zur letzen seite einfach den # anchor weglassen:

Code: Alles auswählen

$view_topic_url = append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $topic_rowset[$i]['topic_last_post_id']);

Verfasst: 21.12.2007 14:03
von gsxfan
Hmm.....das sieht schon mal gut aus. Vielen Dank.

Aber biegt das nicht global view_topic_url um? Sprich alle Links, die damit arbeiten zeigen dann die letzte Seite an und nicht mehr den letzten Beitrag?

Bau ich mir nachher mal in die lokale Installation ein und schau, was dabei herauskommt.

Verfasst: 21.12.2007 16:59
von gsxfan
Und es funktioniert auch. Danke, Seimon.

Wie ich schon schrieb, das bedeutet eine globale Änderung von view_topic_url. Damit öffnet sich auch bei Klick auf das Beitragsthema links über der Seitenanzahl die letzte Seite.

Damit diese Funktion nicht geändert wird, habe ich eine zweite Variable namens U_VIEW_TOPIC erstellt ( 'U_VIEW_TOPIC1' => $view_topic_url1,) und $view_topic_url1 mit Deinem Vorschlag ohne Anker versehen. U_VIEW_TOPIC1 rufe ich nun wie oben beschrieben mit onclick="window.location.href='{topicrow.U_VIEW_TOPIC1}'" auf und damit öffnet sich die letzte Seite eines mehrseitigen Beitrags.
Die Funktion des Öffnens der ersten Seite eines Beitrags mit Klick auf das Thema bleibt wie vorher bestehen und wird damit nicht beeinträchtigt.

Perfekt.