MyBB.de Forum
Pagination mit Drop-Down-Liste - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.4.x (https://www.mybb.de/forum/forum-51.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-52.html)
+---- Thema: Pagination mit Drop-Down-Liste (/thread-12246.html)

Seiten: Seiten: 1 2 3


Pagination mit Drop-Down-Liste - Jockl - 30.01.2009

In anderen Foren ist mir schon des öfteren aufgefallen, dass es bei der Pagination auch die Möglichkeit gibt, per Drop-Down-Liste direkt auf bestimmte Seiten innerhalb eines Threads zu springen. Eine recht komfortable Möglichkeit, gerade wenn sich ein Thread über 30-50 Seiten hinzieht.

Die Anzahl der Seiten wird ja bereits über die Fkt. multipage() ermittelt. Über eine entsprechende Drop-Down Liste müsste man also die Seitennummer in die entsprechende URL übergeben können, oder? Ich kann mir im Moment nur nicht zusammen reimen, wie man die (variable) Anzahl der Seiten in die Drop-Down Liste bekommt. Geht das überhaupt per XHTML oder muss da ggf. Javascript herhalten?

Habe hierzu übrigens auch Zwoetzens Beitrag gelesen. Bin mir aber nicht sicher, ob das evtl. auch schon in diese Richtung geht.

Wenn mir jemand unter die Arme greifen könnte wäre das klasse. Blush


RE: Pagination mit Drop-Down-Liste - frostschutz - 30.01.2009

Per XHTML geht es nicht. Per PHP schon, und MyBB ist ja in PHP geschrieben. Du müsstest eben die Funktion multipage() so anpassen, daß sie anstatt der bisherigen Seitenliste (oder zusätzlich dazu), noch eine passende Drop-Down-Liste erzeugt.

Ich finds bei sowas allerdings einfacher, die gewünschte Seitenzahl direkt ins URL-Feld zu tippen. Kommt eh nur alle Jubeljahre vor daß ich bei einem Thread zu einer ganz bestimmten Seite will... falls das mit dem URL-Feld zu kompliziert ist könnte man nebenbei auch ein Eingabefeld auf der Seite realisieren in das man die Nummer eingibt. Wäre einfacher zu realisieren als eine ellenlange Drop-Down-Liste. Solange in der Drop-Down-Liste nicht noch was dabei steht (z.B. Datum von bis der Postings auf der Seite) bringt die Liste eh keinen Mehrwert. Aber das zu generieren wird teuer (SQL-Abfragen...).


RE: Pagination mit Drop-Down-Liste - Jockl - 30.01.2009

Das ist natürlich auch eine tolle Idee und sicher einfacher zu realisieren. Ein Text-Feld für die Eingabe einer Zahl und ein "Gehe zu"-Button, der die page an die URL übergibt. Vielleicht noch vorab per PHP überprüfen, dass auch nur eine Zahl übergeben wird und nicht irgendwas anderes.

...das werde ich mal probieren. Wink

Danke für den Tipp!


RE: Pagination mit Drop-Down-Liste - Michael - 30.01.2009

Nicht getestet:
Code:
<script type="text/javascript">
function gotopage() {
    var page = this.page.value;
    var link = '"showthread.php?tid={$tid}&page='+page;
    window.location = link;
}
</script>

Gehe zu Seite: <input name="page" type="text" size="4" /> <input type="submit" name="submit" value="Los" onclick="javascript:gotopage();" />



RE: Pagination mit Drop-Down-Liste - Jockl - 30.01.2009

Bearingteeth das werde ich heute Abend gleich mal testen. Dankeschön!!


RE: Pagination mit Drop-Down-Liste - Jockl - 31.01.2009

hm, leider sind meine Javascript Kenntnisse noch sehr begrenzt. Ich erhalte die Fehlermeldung
Code:
this.page has no properties
gotopage()showthread.php (line 1902)
onclick(click clientX=0, clientY=0)showthread.php (line 1)
[Break on this error] var page = this.page.value;
und bin damit ziemlich aufgeschmissen.


Nachtrag:
evtl. umständlich, aber ich habe jetzt mal um das Textfeld ein Formular (name="formpage") gepackt und frage den Wert mit "formpage.page.value" ab. Die Seitenzahl wird eingelesen aber nun wird {$tid} nicht ermittelt. Das Ergebnis sieht dann z.B. so aus:
Code:
/showthread.php?page=2&submit=Los



RE: Pagination mit Drop-Down-Liste - Michael - 31.01.2009

Poste mal bitte deinen aktuellen Code.


RE: Pagination mit Drop-Down-Liste - Jockl - 31.01.2009

Zunächst hatte ich den Code aus Deinem o.a. Beitrag 1:1 übernommen. Die JS-Fkt. hatte ich jeweils im Template headerinclude, multipage und auch in showthread ausprobiert.

Nun habe ich gerade folgenden Code im Template multipage stehen:
PHP-Code:
<script type="text/javascript">
<!--
function 
gotopage() {
var 
page formpage.page.value;
var 
link '"showthread.php?tid={$tid}&page='+page;
window.location link;
}
// -->
</script>
<
div class="pagination">
<
span class="pages">{$lang->multipage_pages}</span>
{
$prevpage}{$start}{$mppage}{$end}{$nextpage}</div>

<
div><form name="formpage">Gehe zu Seite: <input name="page" type="text" size="4" />
<
input type="submit" name="submit" value="Los"
onclick="javascript:gotopage();" /></form></div

Dabei entsteht die oben im Nachtrag beschriebene Fehlermeldung.


RE: Pagination mit Drop-Down-Liste - Michael - 01.02.2009

Im Template multipage steht $tid nicht zur Verfügung. Öffne die Datei inc/functions.php und suche nach:
PHP-Code:
function multipage($count$perpage$page$url)
{
    global 
$theme$templates$lang$mybb
Ersetzen durch:
PHP-Code:
function multipage($count$perpage$page$url)
{
    global 
$theme$templates$lang$mybb$tid



RE: Pagination mit Drop-Down-Liste - Jockl - 01.02.2009

Hmmm, leider wird die Thread-ID nicht übernommen. Sad

Die submit-Zeile habe ich übrigens so abgeändert:
Code:
<input type="submit" value="Los" onclick="javascript:gotopage();" />
Damit wird "&submit=Los" (s.o.) nicht mehr in die URL mit übernommen.

Im Moment sieht die URL so aus: .../showthread.php?page=2

tid wird trotz Anpassung der inc/functions.php nicht in die URL eingesetzt.


Nachtrag:
durch einen provozierten Fehler konnte ich feststellen, dass die tid wohl doch in die URL übernommen wird (Firebug zeigt sie kurz an). Sobald aber die Seite zu der URL hinzugefügt wird die Seitenzahl in die URL übernommen, die Thread-ID scheint aber irgendwie zu "verschwinden". Kann das an dem window.location liegen?