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.
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...).
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.
Danke für den Tipp!
das werde ich heute Abend gleich mal testen. Dankeschön!!
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
Poste mal bitte deinen aktuellen Code.
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.
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;
Hmmm, leider wird die Thread-ID nicht übernommen.
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?