[GELÖST] Letzte Seite eines mehrseitigen Threads anspringen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
gsxfan
Mitglied
Beiträge: 562
Registriert: 29.11.2007 11:43
Wohnort: Mittelhessen

[GELÖST] Letzte Seite eines mehrseitigen Threads anspringen

Beitrag von gsxfan »

Hallo,

jetz hab ich auch mal eine Frage. ;-)
Für das 2er hatte ich das eingebaut, vor einem guten Jahr hatte Seimon mir den entscheidenden Tipp gegeben, wie der Aufruf in der viewforum.php gemacht wird.
In der 2er sah das im Original so aus:

Code: Alles auswählen

$view_topic_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id");
Die Modifkation:

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'];
Und ohne den Anker Sprung zur letzten Seite so:

Code: Alles auswählen

$view_topic_url = append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $topic_rowset[$i]['topic_last_post_id']);
Sooo...der Aufruf zum Füllen der Variable $view_topic_url in der viewforum.php in 3.0.4 sieht nun so aus:

Code: Alles auswählen

$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . (($row['forum_id']) ? $row['forum_id'] : $forum_id) . '&t=' . $topic_id);
Ich hab schon mal ein bisschen ausprobiert, mit $row['topic_last_post_id'] krieg ich die ID des letzten Posts in diesem Thread. Aber wie krieg ich das gebacken, damit $view_topic_url mir die letzte Seite ausgibt?

./edith sagt:
Da mir das keine Ruhe gelassen hat, habe ich es selbst gelöst.
Zusätzliche Funktion in functions_display.php:

Code: Alles auswählen

function topic_generate_lastpage($replies, $url)
{
	global $config, $user;
	// Make sure $per_page is a valid value
	$per_page = ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page'];
	if (($replies + 1) > $per_page)
	{
		$total_pages = ceil(($replies + 1) / $per_page);
		$starting_reply = ($total_pages * $per_page) - 15;
	}else{
               $starting_reply = 0;
        }
	return $starting_reply;
}
Generieren der Template-Variable in viewforum.php:

Code: Alles auswählen

'MY_LAST_PAGE'		=> $view_topic_url  . '&start=' . topic_generate_lastpage($replies),
Einbau in viewforum_body.html:
<td class="row88" onclick="window.location.href='{topicrow.MY_LAST_PAGE}'>
Die Template-Variable beinhaltet mit $view_topic_url die URL zum anzuklickenden Thread, es fehlt nur noch der erste Beitrag der letzten Seite (&start=<beitrags_nr). Diesen Wert ermittelt die neue Funktion, die die Gesamtanzahl der Beiträge übermittelt bekommt und damit die Nummer des ersten Beitrag der letzten Seite berechnet.

Ziel des Ganzen ist eine weitere Möglichkeit der Navigation im Forum. Ich habe ein Mouseover für das Ansteuern der Foren und innerhalb der Foren für die Themen eingebaut. So wie hier im Forum (Farbwechsel auf Gelb), bloss mit zusätzlicher Klickmöglichkeit zum Öffnen des Forums bzw. Themas. Damit kann ich nun den ersten Beitrag auf der letzten Seite direkt öffnen. Die anderen Möglichkeiten zum Öffnen eines Themas (Thema von vorne, Seite anwählen oder letzter Beitrag) bleiben davon unberührt.

Sinngemäß das Gleiche bei search.php und search_results.html eingebaut.
Enduros putzen ist wie Bücher verbrennen.
Das GSX1100G-Forum
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“