Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Pagination mit Drop-Down-Liste
#1
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
viele Grüße
Jockl
übersetzte und eigene Plugins
#2
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...).
#3
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!
viele Grüße
Jockl
übersetzte und eigene Plugins
#4
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();" />

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#5
Bearingteeth das werde ich heute Abend gleich mal testen. Dankeschön!!
viele Grüße
Jockl
übersetzte und eigene Plugins
#6
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
viele Grüße
Jockl
übersetzte und eigene Plugins
#7
Poste mal bitte deinen aktuellen Code.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#8
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.
viele Grüße
Jockl
übersetzte und eigene Plugins
#9
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

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#10
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?
viele Grüße
Jockl
übersetzte und eigene Plugins