Seiten Pagination

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
chris1278
Mitglied
Beiträge: 4104
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Seiten Pagination

Beitrag von chris1278 »

DAs könnte vielleicht hiermit zusammenhängen kirk:

Code: Alles auswählen

public function validate_start($start, $per_page, $num_items)
{
	if ($start < 0 || $start >= $num_items)
	{
		return ($start < 0 || $num_items <= 0) ? 0 : floor(($num_items - 1) / $per_page) * $per_page;
	}

	return $start;
}

bzw. wahrscheinlich eher dies hier:

Code: Alles auswählen

	public function on_page($num_items, $per_page, $start)
	{
		$on_page = $this->get_on_page($per_page, $start);
		return $this->user->lang('PAGE_OF', $on_page, max(ceil($num_items / $per_page), 1));
	}
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1391
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Seiten Pagination

Beitrag von Mike-on-Tour »

Ich habe das von Udo geschilderte Verhalten eben bei einer meiner Ext und im Forum nachvollzogen und kann das bestätigen. Der Grund liegt aber nicht in irgendeiner Funktion von pagination.php, sondern in einer verkehrten Reihenfolge des Aufrufes von $pagination->validate_start() und der DB-Abfrage $db->sql_query_limit().
Ich hatte in meiner Ext zuerst die DB-Abfrage und anschließend die Berechnung von $start mittels $pagination->validate_start(). Wenn man das Ganze umkehrt, dann funktioniert es.

Muss ich jetzt wohl mal meine Erweiterungen darauf hin überprüfen, die Arbeit reißt nicht ab.
Kein Support über PN!
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 3297
Registriert: 15.12.2014 10:19

Re: Seiten Pagination

Beitrag von LukeWCS »

Kirk hat geschrieben: 30.12.2025 11:31 Ich bin per Zufall auf was gestoßen wo ich nicht weiter komme.
Guter Fund Udo.

Kann das Problem ebenfalls bestätigen, bei RTNG. Lediglich das Symptom ist anders; bei RTNG wird keine Meldung bezüglich fehlender Beiträge angezeigt, sondern schlicht gar nichts mehr. Das sieht dann im Forenindex so aus, als ob RTNG gar nicht vorhanden wäre.
Mike-on-Tour hat geschrieben: 30.12.2025 14:10 mittels $pagination->validate_start()
Danke für den Hinweis Mike. Da ich bisher noch nicht mit der Pagination hantiert hatte, war das jetzt sehr hilfreich. Mit der besagten Funktion konnte ich auf die Schnelle das Problem auch schon beheben, denn das wurde bei RTNG bisher so gehandhabt, dass RTNG dann gar nichts gemacht hat und einfach die Kontrolle an phpBB zurückgab. Den Fix muss sich aber Thorsten anschauen, ob das so passt.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
IMC
Mitglied
Beiträge: 879
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Seiten Pagination

Beitrag von IMC »

LukeWCS hat geschrieben: 30.12.2025 16:12 Kann das Problem ebenfalls bestätigen, bei RTNG. Lediglich das Symptom ist anders; bei RTNG wird keine Meldung bezüglich fehlender Beiträge angezeigt, sondern schlicht gar nichts mehr. Das sieht dann im Forenindex so aus, als ob RTNG gar nicht vorhanden wäre.
Dann verhält sich RTNG bei dir anders als bei mir. Es wird in einem solchen Fall wird immer der letzte Topic angezeigt. Dies wird in diesen Codezeilen realisiert.
Beispiel (gibt es dreimal):
$rtng_start = min(count($unread_topics) - 1 , (int) $rtng_start);

Das hat mir schon länger nich gefallen. Hatte es aber wieder vergessen auf die ToDo-Liste zu setzen.

Die phpBB Funktion gefällt mir auch nicht besonderlich. Da auch Startwerte innerhalb einer Seite möglich sind (Zwischenwerte). Deshalb habe ich da mal was eigenes gemacht.

Code: Alles auswählen

	public function validate_start($start, $per_page, $num_items)
	{
		$start = max(0, $start);
		$start = $start >= $num_items ?  $num_items -1 : $start;
		$start = intdiv($start, $per_page) * $per_page;

		return $start;
	}
Gruß, Thorsten

Meine Extensions
Benutzeravatar
chris1278
Mitglied
Beiträge: 4104
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Seiten Pagination

Beitrag von chris1278 »

IMC aber mit der Variante wird doch dann nur die letzte variante genutzt.

Wenn ich das richtig sehe wird dann nur dies hier effektiv genutzt:

Code: Alles auswählen

$start = intdiv($start, $per_page) * $per_page;
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 8284
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: Seiten Pagination

Beitrag von Kirk »

Ich glaub das mein Code für die Seiten Pagination komplett veraltet ist. Hier mal die komplette PHP Datei.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 3297
Registriert: 15.12.2014 10:19

Re: Seiten Pagination

Beitrag von LukeWCS »

IMC hat geschrieben: 30.12.2025 17:33 Dann verhält sich RTNG bei dir anders als bei mir. Es wird in einem solchen Fall wird immer der letzte Topic angezeigt.
Wie gesagt, RTNG zeigt gar nichts an, als ob es gar nicht vorhanden wäre. Zuverlässig reproduzierbar. Dann scheint die Art des Symptoms noch von irgendwas abhängig zu sein, eventuell von der Anzahl der verfügbaren Themen?

Okay, dann mache ich meinen Fix rückgängig und korrigiere nur dev10. Dann mach du den Pagination Fix wenn ich dev11 online habe.
chris1278 hat geschrieben: 30.12.2025 17:40 Wenn ich das richtig sehe wird dann nur dies hier effektiv genutzt:
Nee, guck dir den Code nochmal in Ruhe an. Zeile 2 nimmt Bezug auf Zeile 1 und 3 nimmt Bezug auf Zeile 2. Thorsten hat den ganzen Code einfach auf 3 Zeilen verteilt, damit er besser les- und wartbar ist.
Kirk hat geschrieben: 30.12.2025 17:45 Ich glaub das mein Code für die Seiten Pagination komplett veraltet ist.
Kann schon vorkommen, alleine weil Funktionen bei phpBB ja auch immer mal wieder angepackt und erweitert werden, oder neue Funktionen dazu kommen, die es bisher gar nicht gab. Deswegen ist es zwangsläufig und unvermeidbar, dass man früher oder später irgendwo "veralteten" Code in seinen Exts hat.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
chris1278
Mitglied
Beiträge: 4104
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Seiten Pagination

Beitrag von chris1278 »

JA jetzt auch gesehen. Alles klar.
Antworten

Zurück zu „Extension Bastelstube“