Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 30 Gast/Gäste
Pagination mit Drop-Down-Liste
#11
Also mir lässt das Thema ja keine Ruhe. Bin ständig am Herumprobieren.

Mittlerweile bin ich soweit, dass ich die tid beim Klick des Formular-Buttons mit auf den Weg zur Javascript-Funktion schicken.
Das klappt ganz gut und mit
Code:
alert ("showthread.php?tid=" + tid_nr + "&page="+page);
wird die zu erzeugende URL auch richtig angezeigt.
Das große Problem besteht aber weiterhin, die URL im Browser-Fenster auch zu öffnen. Mit
Code:
window.location.href = "showthread.php?tid=" + tid_nr + "&page=" + page;
wird die URL "showthread.php?page=X" ausgegeben. "?tid=XXX" geht dabei irgendwie "verloren".
Rufe ich aber
Code:
open("showthread.php?tid=" + tid_nr + "&page=" + page);
auf, wird ein neuer Tab geöffnet und die richtige URL wird geöffnet.

Das ganze hat mittlerweile ja nur noch bedingt mit der Forensoftware zu tun (der Thread kann von mir aus auch verschoben werden), aber wenn hier jemand einen Tipp hat, wäre ich (fast Wink ) unendlich dankbar. Bei G**gle habe ich schon stundenlang gesucht, konnte aber nichts finden was meine Frage beantwortet.

Achja, die js-Datei habe ich mittlerweile ausgelagert und rufe sie im headerinclude auf.
viele Grüße
Jockl
übersetzte und eigene Plugins
#12
Geschafft! Nun klappt es! *hühüpf* Big Grin
viele Grüße
Jockl
übersetzte und eigene Plugins
#13
So gehts auch (ohne Javascript):
Code:
<form name="jumptopage" action="showthread.php" method="get">
Gehe zu Seite: <input name="page" type="text" size="4" />
<input name="tid" type="hidden" value="{$tid}" />
<input type="submit" name="submit" value="Los" />
</form>

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.
#14
OK, es geht also auch einfacher....Rolleyes

Dann buche ich das mal als "Erweiterung des Erfahrungsschatzes in Bezug auf JS" ab. Big Grin

Ich hatte das nun so gelöst:

Im Template headerinclude wird folgende Funktion eingesetzt:
Code:
function gotopage(tid_nummer) {
var page = document.getElementById('page').value;
    //Prüfen ob eine Zahl eingegeben wurde
    if (!isNaN(page)) {
        window.location.href = "showthread.php?tid="+tid_nummer+"&page="+page;
        return false;
    }
    else
    {
        alert("Bitte eine Zahl eingeben!");
        return false;
    }
}

Das Template mutlipage sieht dann so aus:
Code:
<div class="pagination">
<form name="formpage">
<span class="pages">{$lang->multipage_pages}</span>
{$prevpage}{$start}{$mppage}{$end}{$nextpage}
<span class="GoToPage">Gehe zu Seite: <input name="page" id="page" type="text" size="1" />
</span><input type="submit" value="Los" onclick="return gotopage({$tid});" />
</form>
</div>
Und die zugehörige CSS-Klasse je nach Geschmack
Code:
.GoToPage {
    padding-left:15px;
    padding-right:5px;
    font-weight:bold;
}

Die Thread-ID wird wie weiter oben in Deinem Beitrag beschrieben in der inc/functions.php als globale Variable übergeben.
viele Grüße
Jockl
übersetzte und eigene Plugins
#15
So, nun habe ich in den letzten Wochen diese Funktion ziemlich umfangreich gestaltet (hat mit den o.a. Zeilen nicht mehr viel zu tun) und sie funktioniert mittlerweile auf fast allen Seiten im Forum, bei denen die multipage-Funktion erscheint. Einer Veröffentlichung würde also im Grunde nichts entgegen stehen.

Wenn ich da nicht doch noch auf ein Problem gestoßen wäre, bei dem ich einfach nicht weiter komme.

Die Variable {$multipage} wird ja auf den entsprechenden Seiten 2 mal dargestellt. Einmal oberhalb und einmal unterhalb z.B. bei den Forenlisten oder auch bei den Beiträgen.
Das multipage-Template habe ich nun mit einer entsprechenden Javascript-Funktion versehen, die per ID eine div-Box zur Seitenauswahl erscheinen lässt. Da es das Template aber nur 1-mal gibt, wird bzw. kann ich auch nur eine ID vergeben. Eine ID für zwei Paginationsdarstellungen!
Problem: die Funktion wird deshalb nur bei einer der beiden Paginationen ausgeführt. Ich hätte es aber ganz gerne, dass die Funktion oben und unten funktioniert.

Vermutlich habe ich mich jetzt ziemlich wirr ausgedrückt, aber so in etwa sieht es auch gerade in meinem Kopf aus. Ich komme einfach nicht dahinter, wie ich das Problem umgehen kann und hoffe, dass mir jemand von Euch einen Tipp geben kann. Wink


Nachtrag:
Es wäre bestimmt möglich, beim Laden der Seite mit "window.onload" beide divs einzulesen und ihnen anschließend jeweils eine neue ID zu vergeben? Das Problem ist dann aber, dass der Übergabeparameter der "onklick"-JS-Funktion auch umbenannt werden müsste.
viele Grüße
Jockl
übersetzte und eigene Plugins
#16
Muss es denn eine ID sein? Sonst kannst du das class-Attribut verwenden.

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.
#17
Also mit JS kann man im Prinzip ja nur IDs ansprechen. Allerdings haben die beiden {$multipage}-Anzeigen aufgrund der Templateanwendung ja ein und die selbe ID.
Meinst Du mit dem "class-Attribut" eine CSS-Klasse? Da wüsste ich jetzt irgendwie nicht, wie Du das meinst.....
Habe mittlerweile die sog. "getElementsbyClassName"-Funktion gefunden. Mit der kann man die Anzahl von Elementen auslesen, die zu einer Klasse gehören. Das wären in dem Fall ja 2. Jetzt muss ich "nur" noch herausfinden, wie ich die gefundenen Elemente separat ansprechen kann.......Huh
viele Grüße
Jockl
übersetzte und eigene Plugins
#18
(24.02.2009, 22:13)Jockl schrieb: Also mit JS kann man im Prinzip ja nur IDs ansprechen. Allerdings haben die beiden {$multipage}-Anzeigen aufgrund der Templateanwendung ja ein und die selbe ID.
Meinst Du mit dem "class-Attribut" eine CSS-Klasse? Da wüsste ich jetzt irgendwie nicht, wie Du das meinst.....
Das stimmt so nicht ganz: http://de.selfhtml.org/javascript/objekt...class_name

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.
#19
es hat keinen Sinn Sad

Ich fürchte, da fehlt's bei mir "vom Boa weg". Ich sitze seit dem WE mehr oder weniger ununterbrochen an diesem Teil, kenne "fast alle JS-Seiten, die es im www gibt", schaffe aber diese Hürde einfach nicht.
Ich gebe jetzt erst mal auf. Muss mich tagsüber auch mal wieder auf die Arbeit konzentrieren können.....Rolleyes

Danke trotzdem!
viele Grüße
Jockl
übersetzte und eigene Plugins
#20
(25.02.2009, 23:31)Jockl schrieb: Ich gebe jetzt erst mal auf.
...ist schon wieder Schnee von (Vor)gestern; ich möchte das einfach schaffen. Wink

Ich bin mittlerweile zu der Überzeugung gelangt, dass ich die Funktion, so wie ich mir das vorstelle, nicht im multipage-Template unterbekommen kann. Statt dessen müsste ich den HTML-Code in den entsprechenden Templates setzen, die {$multipage} enthalten. Für die richtige Funktionsweise benötige ich aber die Variable $pages, die quasi als "Abfallprodukt" von der multipage-Funktion geliefert wird.

Gibt es eine Möglichkeit, die Variable $pages global zur Verfügung zu stellen, damit ich sie verwenden kann? Außerhalb des multipage-Templates scheint es die nicht zu geben. Ich denke, damit könnte ich mir das Leben leichter machen.

Alternativ: ich erzeuge innerhalb der multipage-Funktion (/inc/functions.php) eine neue Variable, die auf ein neues Template verweist und damit auch $pages wieder zur Verfügung stellen könnte. Diese Variable würde ich dann in den jeweils in Frage kommenden Templates vor {$multipage} setzen. Ob das funktioniert?
viele Grüße
Jockl
übersetzte und eigene Plugins