Abschnitte per AJAX nachladen - Konkret
WBCE unterstützt von Haus aus beliebig viele Abschnitte auf einer Seite. Da würde es sich doch anbieten, diese für Effekte und AJAX-Nachladen zu verwenden. Geht das?
Damit etwas beim Scrollen nachgeladen wird, muss es einen Auslöser geben - es muss einem Script also mitgeteilt werden, was es holen soll. Und das muss irgendwo definiert werden.
Aber wie erfährt das Modul nun, was es tun soll? Und wie umgehe ich, dass WBCE die Inhalte „voreilig“ selbst ausgibt?
Grundsätzlich wird es ein Modul brauchen, das die nötigen Strukturen im Quelltext erzeugt und sowohl Javascript/CSS als auch ein Script enthält, das die dann angeforderten Inhalte nachliefert.
Es muss also ein Abschnitt dieses Moduls auf einer Seite angelegt werden.
Wie sag‘ ichs ihm?
Einen speziellen Block verwenden
Nachladbare Inhalte könnten einem bestimmten Block im Template zugewiesen werden, der im Template aber keine Ausgabe erzeugt. Dazu muss man 2 Dinge im Template ändern: In der info.php den zusätzlichen Block angeben, und in der (Template) index.php dafür sorgen, dass er nicht einmal abgefragt wird.
Oben genanntes Modul darf natürlich nicht in diesem speziellen Block sein, sonst würde es gar nicht aktiviert.
Alle Unterseiten einer Seite
Das Modul ChildPages2Tabs stellt alle unsichtbaren Unterseiten einer Seite als Tabs auf eben dieser Seite dar. ChildPages2Tabs wäre also ein Muster, wie man die nachzuladenden Inhalte in Unterseiten ablegen könnte. Ein Vorteil gegenüber der Verwendung eines speziellen Blocks wäre, dass man nicht auf einzelne Blöcke beschränkt ist, sondern auch Kombinationen möglich sind, die dann gemeinsam nachgeladen und dargestellt werden. Ein Nachteil: Man braucht eine Anleitung, das ist nicht sehr intuitiv.
Was wohl insgesamt nicht möglich ist: Verschränkung von Abschnitten, die sofort dargestellt werden und solchen, die erst später nachgeladen werden. Letztere würden immer nach Ersteren stehen, egal, in elcher Reihenfolge sie angelegt wurden.
Berechtigungen...
Klare Sache: Die Berechtigungen müssen wie auf der Seite gelten, in die die Abschnitte geladen werden. Bei der Variante Alle Unterseiten einer Seite ist das nicht so trivial, weil diese Unterseiten prinzipiell auch gesondert aufgerufen werden können, wenn sie "nur" unsichtbar sind. Hier ist die Variante Einen speziellen Block verwenden im Vorteil.
und Spassbremsen
Wie verhalten sich Module, die ihrerseits wieder etwas nachladen? Das wäre zb beim Frontend-Edit in Teasers der Fall, aber auch Topics, Wunderblock und viele andere wären betroffen. Würde Miniform funktionieren? Tiny Newsletter?
Vor allem geht es dabei um die Frage, was ein $( document ).ready(function() {.. macht, wenn das zugehörige Modul noch gar nicht geladen ist. Zwar könnte man Javascript, das zu einem Modul gehört, erst nach dem Modulinhalt laden, aber: Das geht nur beim ersten mal, bei jedem weiteren Vorkommen eines Moduls käme es zu unverständlichen Konflikten.
Ähnliches gilt für CSS: Soll dieses gleich vorab geladen werden - oder ebenfalls nachträglich eingefügt werden?
Kommentare:
Die "Spassbremsen" machen einen gewichtigen Eindruck :(
Daran könnte das scheitern.Franky UAntworten
Hallo. Nachladen eines Abschnitts zeigt u.a. der PHP Code https://forum.wbce.org/viewtopic.php?pid=37940#p37940 in Kombination mit diesem Javascript Ajax Schnipsel https://forum.wbce.org/viewtopic.php?pid=37976#p37976.
zx80Antworten