Support Home > Design > Unendlich Scrollen

Unendlich Scrollen

Anstatt auf einen Link klicken zu müssen, um den nächsten Satz von Beiträgen aufzurufen, lädt unendliches Scrollen die nächsten Beiträge automatisch in den sichtbaren Bereich, wenn der Besucher das Ende der Seite erreicht.

Im Gegensatz zu vielen Funktionen in Jetpack funktioniert unendliches Scrollen nur mit Themes, die Unterstützung dafür bieten. Da jedes Theme etwas anders aufgebaut ist, benötigt die Unendlich Scrollen-Funktion Informationen über das Theme, um ordnungsgemäß zu funktionieren.

HINWEIS: Die meisten Themes besitzen bereits Unterstützung für unendliches Scrollen. Wenn du wissen möchtest, ob dein Theme unendliches Scrollen unterstützt, gehe im Dashboard deiner Website zu JetpackEinstellungenSchreiben und sieh im Abschnitt „Theme-Erweiterungen“ nach.

Wenn dein Theme keine integrierte Unterstützung für unendliches Scrollen besitzt, findest du im Folgenden detaillierte Anweisungen dazu, wie du deinem Theme die Unterstützung dafür hinzufügst und mit CSS das Aussehen anpasst.

Hinzufügen der Unterstützung

Das Aktivieren von unendlichem Scrollen ähnelt dem Hinzufügen der Unterstützung für Beitrags-Vorschaubilder oder Editor-Stile, da wir die Funktion add_theme_support() nutzen. Durch die Bereitstellung einiger wichtiger Informationen beim Aufrufen von add_theme_support() wird unendliches Scrollen nahtlos in dein Theme integriert.
Wenn du ein schön gestaltetes Theme wie die Standard-WordPress-Themes besitzt, ist das Hinzufügen von unendlichem Scrollen ein Kinderspiel. So gehst du bei Twenty Twelve vor:

add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'footer' => 'page',
) );

Dadurch aktivierst du vollständig funktionierendes unendliches Scrollen.

container

Der Parameter container ist für das Hinzufügen von unendlichem Scrollen zu deinem Theme am wichtigsten: Er gibt die ID des HTML-Elements an, zu dem unendliches Scrollen weitere Beiträge hinzufügen soll. Der Standardwert ist content, kann aber jede beliebige gültige CSS-ID sein, die im unterstützten Theme enthalten ist und für das Anhängen von Beiträgen geeignet ist. Im Normalfall ist das der übergeordnete Container der Beiträge in deinem Theme.

footer

Eines der Probleme bei unendlichem Scrollen ist, dass du den Footer einer Seite nicht anzeigen kannst, da beim Erreichen des Endes neue Beiträge geladen werden. Unsere Funktion für unendliches Scrollen bietet einen festen Footer, der eingeblendet wird, wenn du auf der Seite nach unten scrollst. Durch den Parameter footer wird dieser Footer in dein Theme-Design eingefügt. Durch das Übergeben einer anderen ID passt der Unendlich Scrollen-Footer seine Breite optimal an dein Design an. Wenn du stattdessen einen false-Wert übergibst, wird kein neuer Footer hinzugefügt.
Es gibt auch weitere Parameter, die du anpassen kannst. Dies ist ein Beispiel, das alle Standardwerte für jede Konfigurationsoption anzeigt:

add_theme_support( 'infinite-scroll', array(
 'type' => 'scroll',
 'footer_widgets' => false,
 'container' => 'content',
 'wrapper' => true,
 'render' => false,
 'posts_per_page' => false,
) );

Erklärung jeder Option:

type

Der Parameter type akzeptiert zwei verschiedene Werte: scroll oder click. Damit wird das Verhalten von unendlichem Scrollen gesteuert. Durch den Parameter scroll werden Beiträge automatisch geladen, wenn ein Besucher das Ende der aktuellen Liste von Beiträgen erreicht. Im Gegensatz dazu wird durch den Parameter click der Button Weitere Beiträge laden angezeigt, sodass der Benutzer das Laden weiterer Beiträge selbst steuern kann.

Standardmäßig wird scroll verwendet, aber wenn ein Theme die Footer-Widgets nutzt, kann der Parameter mit click überschrieben werden, sodass die Widgets verfügbar sind.

footer_widgets

Das Argument footer_widgets akzeptiert eine Vielzahl von Werten und gibt an, ob ein Theme Footer-Widgets besitzt. Wenn Footer-Widgets vorhanden sind, wird der Scroll-Typ auf click festgelegt, sodass die Widgets angezeigt werden.

Im einfachsten Fall kann mit den booleschen Werten true oder false festgelegt werden, ob der Footer stets bzw. niemals angezeigt werden sollte.
Außerdem akzeptiert das Argument footer_widgets eine Zeichenfolge, die eine Seitenleisten-ID darstellt (z. B. 'sidebar-1'), oder ein Array von Seitenleisten-IDs. Der Code für unendliches Scrollen überprüft, ob die Seitenleisten Widgets enthalten und legt das Argument footer_widgets entsprechend fest.

Sofern möglich, empfehlen wir die Bereitstellung von Seitenleisten-IDs, wenn ein Theme Widget-Bereiche unter der Beitragsliste platziert. Dadurch erhalten die Benutzer des Themes das beste Erlebnis, da dynamisch festgelegt wird, ob der Scroll-Typ scroll oder click sein sollte. Wenn jedoch ein Theme von Anfang an den Parameter click als Typ angibt, kann das Argument footer_widgets problemlos weggelassen werden.

Zusätzlich zu all diesen Optionen ist der Filter infinite_scroll_has_footer_widgets für erweiterte Logik verfügbar. Dieser Filter muss einen booleschen Wert zurückgeben und kann verwendet werden, um das Vorhandensein von Navigationsmenüs oder die Verwendung eines Mobilgeräts zu erkennen.

wrapper

Das Argument wrapper akzeptiert ebenso wie footer_widgets einige unterschiedliche Werte. Dieses Argument legt fest, ob jeder Satz zusätzlicher Beiträge in einem div-Element eingeschlossen wird, wenn er an den Container angehängt wird, der im vorherigen Argument angegeben wurde.
Wenn der boolesche Wert true angegeben wird, wird ein div-Element mit der Klasse infinite-wrap um die zusätzlichen Beiträge herum eingefügt. Bei false ist das nicht der Fall.

Um die Beiträge in einem div-Element mit einer benutzerdefinierten Klasse einzuschließen, legst du für das Argument wrapper eine Zeichenfolge fest, die diese benutzerdefinierte Klasse darstellt.
Bitte beachte, dass das Argument wrapper nur eine einzige Zeichenfolge ohne Leerzeichen akzeptiert.

Es ist empfehlenswert, die angehängten Beiträge mit einem div-Element zu umschließen, es sei denn, dies würde ein fehlerhaftes Markup ergeben. Wenn ein Theme beispielsweise ein Listenelement nutzt (ol oder ul), um Beiträge anzuzeigen, sollte „wrapper“ deaktiviert werden, damit div-Elemente nur da angezeigt werden, wo sie benötigt werden.

Render

Unendliches Scrollen nutzt eine standardmäßige WordPress-Schleife, um die angehängten zusätzlichen Beiträge darzustellen, und nutzt Vorlagenteile im Formular content-{post format}.php. Wenn ein Theme mindestens content.php umfasst, kann das Argument render weggelassen werden. Die folgende Darstellungsfunktion wird standardmäßig von unendlichem Scrollen verwendet:

while( have_posts() ) {
 the_post();
 get_template_part( 'content', get_post_format() );
}

Wenn eine größere Anpassung erforderlich ist oder wenn ein Theme die content-Vorlagenteile nicht verwendet, sollte ein Funktionsname für das Argument render angegeben werden. Diese Funktion wird anschließend zum Generieren des Markups für unendliches Scrollen verwendet. Die Funktion muss den Teil while() der WordPress-Schleife enthalten und kann jede für das Theme verfügbare Funktion nutzen, wenn sie Beiträge darstellt.

posts_per_page

Standardmäßig steuert das Argument type, wie viele Beiträge jedes Mal geladen werden, wenn unendliches Scrollen zum Einsatz kommt. Beim Typ scroll werden sieben (7) Beiträge jedes Mal geladen, wenn Unendlich Scrollen aktiviert wird. Beim Typ click wird der Wert „Blog pages show at most“ (Maximal angezeigte Blogseiten) einer Website verwendet, der unter Einstellungen → Lesen zu finden ist.
Wenn das Layout eines Themes jedoch eine bestimmte Anzahl an Beiträgen erwartet, überschreibt das Argument posts_per_page die im vorherigen Abschnitt genannten Standardwerte. Diese Kontrollmöglichkeit ist beispielsweise in einem Theme mit einem dreispaltigen Layout von Vorteil, wo mehr oder weniger als drei Beiträge ein ungerades Layout ergeben würden.

Beispiele

Angesichts der großen Vielfalt an Themes haben wir versucht, genügend Kontrollmöglichkeiten für das Verhalten von unendlichem Scrollen bereitzustellen, um möglichst viele Themes zu unterstützen. Dennoch zeigte unsere Erfahrung bei WordPress.com, dass jedes Theme nur sehr wenige Konfigurationsoptionen benötigt. Die Unendlich Scrollen-Konfiguration der WordPress-Standard-Themes demonstriert das:

Twenty Twelve
/**
 * Add theme support for infinite scroll.
 *
 * @uses add_theme_support
 * @return void
 */
function twenty_twelve_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 ) );
}
add_action( 'after_setup_theme', 'twenty_twelve_infinite_scroll_init' );

Falls du mit dem „Twenty Twelve“-Theme nicht vertraut bist: Es verwendet content-{post format}.php-Vorlagenteile und besitzt keinen Widget-Bereich unterhalb der Beiträge, weshalb wir die Argumente footer_widgets und render weggelassen haben. Da der Wert container dem Standardwert entspricht, hätte dieser ebenfalls weggelassen werden können. Zu Demonstrationszwecken haben wir diesen jedoch beibehalten.

Twenty Eleven
/**
 * Add theme support for infinite scroll.
 */
function twenty_eleven_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'footer_widgets' => array( 'sidebar-3', 'sidebar-4', 'sidebar-5', ),
 'footer' => 'page',
 ) );
}
add_action( 'after_setup_theme', 'twenty_eleven_infinite_scroll_init' );

Das „Twenty Eleven“-Theme besitzt Footer-Widget-Bereiche, die jedoch nicht erreichbar wären, da beim Herunterscrollen stets neue Beiträge geladen werden, bevor das Ende der Seite erreicht werden kann. Um dieses Problem zu lösen, übergeben wir ein Array mit den IDs dieser Widget-Bereiche an footer_widgets. Wenn nun eine dieser Seitenleisten ein Widget beinhaltet, wird dieses von unserem Unendlich Scrollen-Plugin erkannt und es findet ein automatischer Wechsel zum Typ click statt (dabei können mit einem Klick weitere Beiträge geladen werden), sodass der Inhalt deines Footers komplett zugänglich ist. Wenn dein Theme Footer-Widgets besitzt, solltest du diesen Ansatz in Erwägung ziehen, um die Benutzerfreundlichkeit zu erhöhen.

Twenty Ten
/**
 * Add theme support for infinite scroll
 */
function twenty_ten_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'render' => 'twenty_ten_infinite_scroll_render',
 'footer' => 'wrapper',
 ) );
}
add_action( 'after_setup_theme', 'twenty_ten_infinite_scroll_init' );
/**
 * Set the code to be rendered on for calling posts,
 * hooked to template parts when possible.
 *
 * Note: must define a loop.
 *
function twenty_ten_infinite_scroll_render() {
 get_template_part( 'loop' );
}

Das „Twenty Ten“-Theme verwendet eine etwas andere Vorlagenstruktur zur Darstellung von Beiträgen. Um unendlich scrollen zu können, verwenden wir daher eine benutzerdefinierte Funktion zum Darstellen der Beiträge.

Stilvolle Umsetzung

Die perfekte Integration von unendlichem Scrollen in das Design deiner Website ist das letzte fehlende Puzzleteil. Dabei geht unendliches Scrollen davon aus, dass das Theme die Funktion body_class unterstützt, und bietet Theme-Entwicklern äußerste Flexibilität durch die Verwendung bestimmter Body-Klassen: Wann immer unendliches Scrollen aktiviert ist, ist die Klasse infinite-scroll in body verfügbar. Für den Scrolltyp „scroll“ kannst du auch die Klasse neverending verwenden. Sobald der letzte Beitrag eines Blogs geladen wurde, wird die Klasse infinity-end hinzugefügt. Damit kannst du deinen regulären Footer und deine Navigationslinks verstecken und diese wieder zeigen, wenn unendliches Scrollen am Ende angelangt ist. Beispiel:

/* Hides navigation links and site footer when infinite scroll is active */
.infinite-scroll #navigation,
.infinite-scroll.neverending #footer {
 display: none;
}
/* Shows the footer again in case all posts have been loaded */
.infinity-end.neverending #footer {
 display: block;
}

Du solltest zudem das Aussehen von zwei Elementen anpassen, sodass diese mit dem Design deines Themes übereinstimmen:

[...]

und

[…]

Der Ladeindikator span.infinite-loader zeigt an, dass gerade neue Beiträge geladen werden. Dieses Element wird als untergeordnetes Element des Containers eingefügt. Nachdem es nicht mehr länger benötigt wird, wird es eher versteckt als aus dem DOM entfernt. Vergewissere dich, dass dein CSS in beiden Fällen funktioniert. Bei
div#infinite-handle handelt es sich um den Button Weitere Beiträge laden, der für type=click angezeigt wird. Wenn dein Theme immer type=scroll verwendet und künftig auch keine Footer-Widgets besitzen wird, kannst du dies ignorieren.

JavaScript-Events

Bei einigen Themes wird es zwangsläufig Situationen geben, bei denen nach dem Hinzufügen von Beiträgen JavaScript erforderlich ist. Ein Beispiel dafür ist ein Theme, das jQuery Masonry verwendet und diese Bibliothek auslösen muss, um die zusätzlichen Beiträge positionieren zu können. Deshalb lösen wir nach dem Anhängen der Beiträge ein Event aus. Um dieses Event nutzen zu können, achte einfach auf das post-load-Event, wenn es für document.body ausgelöst wird:

( function( $ ) {
 $( document.body ).on( 'post-load', function () {
 // New posts have been added to the page.
 } );
} )( jQuery );

Hinzufügen benutzerdefinierter Argumente zur Unendlich Scrollen-Abfrage

Einige Themes und Plugins fügen zusätzliche Argumente zu Beitragsabfragen hinzu, die häufig die Sortierung oder das Laden der Beiträge ändern. Mit dem Filter infinite_scroll_query_args kannst du diese zusätzlichen Argumente auch zu Unendlich Scrollen hinzufügen. Im Beispiel unten fügen wir die zwei benutzerdefinierten Sortierungsparameter order und orderby hinzu:

/**
 * Sort all Infinite Scroll results alphabetically by post name
 *
 * @param array $args
 * @filter infinite_scroll_query_args
 * @return array
 */
function jetpack_infinite_scroll_query_args( $args ) {
 $args['order'] = 'ASC';
 $args['orderby'] = 'name';
 return $args;
}
add_filter( 'infinite_scroll_query_args', 'jetpack_infinite_scroll_query_args' );

Problembehandlung

Ich habe für unendliches Scrollen die Option Mehr Beiträge laden, wenn der Leser nach unten scrollt festgelegt, stattdessen wird jedoch der Button „Älterer Beitrag“ angezeigt.

Besitzt dein Theme Footer-Widgets? Wenn im Footer-Widget-Bereich beliebige Widgets vorhanden sind, zeigt unendliches Scrollen automatisch den Button „Älterer Beitrag“ an, damit gewährleistet ist, dass die Footer-Widgets auf deiner Website angezeigt werden können. Wenn du möchtest, dass Beiträge beim Herunterscrollen geladen werden, kannst du die Widgets in einen anderen Widget-Bereich wie die Seitenleiste platzieren. Falls dein Theme nur Footer-Widget-Bereiche besitzt, solltest du dich nach einem anderen Theme umsehen, das mehr Optionen für Widget-Bereiche besitzt.

Weitere Anmerkungen

Da wir erkannt haben, dass diese Funktion vom Theme unterstützt werden muss, um verwendet werden zu können, haben wir die Unterstützung für WordPress-Standard-Themes wie „Twenty Ten“, „Twenty Eleven“ usw. in Jetpack integriert. Solltest du eines dieser Themes benutzen, dann kannst du das unendliche Scrollen aktivieren und sofort verwenden. Die Automattic-Themes von WordPress.org sollten unendliches Scrollen bereits unterstützen (die Funktionskarte wird die Nutzer zur Aktualisierung ihrer Themes auffordern, sobald ein Update für das aktive Theme zur Verfügung steht).

Informationen zum Datenschutz

Diese Funktion ist standardmäßig deaktiviert. Wenn du sie deaktivieren musst, verwendest du dazu die Einstellung Mehr Beiträge mit dem Standard-Theme-Verhalten laden im Abschnitt Theme-Erweiterungen unter Jetpack → Einstellungen → Schreiben.

Weitere Informationen zur Datennutzung auf deiner Website
Genutzte Daten
Website-Betreiber/Benutzer
Um Seitenaufrufe über die WordPress.com-Statistiken (die für das Zählen der Seitenaufrufe aktiviert sein müssen) mit zusätzlichen Ladevorgängen aufzuzeichnen, werden folgende Informationen verwendet: IP-Adresse, WordPress.com-Benutzer-ID (wenn angemeldet), WordPress.com-Benutzername (wenn angemeldet), Benutzeragent, Besucher-URL, Referrer-URL, Zeitstempel eines Ereignisses, Browsersprache, Ländercode.
Website-Besucher
Um Seitenaufrufe über die WordPress.com-Statistiken (die für das Zählen der Seitenaufrufe aktiviert sein müssen) mit zusätzlichen Ladevorgängen aufzuzeichnen, werden folgende Informationen verwendet: IP-Adresse, WordPress.com-Benutzer-ID (wenn angemeldet), WordPress.com-Benutzername (wenn angemeldet), Benutzeragent, Besucher-URL, Referrer-URL, Zeitstempel eines Ereignisses, Browsersprache, Ländercode.
Verfolgte Aktivitäten
Website-Betreiber/Benutzer
Seitenaufrufe werden mit jedem zusätzlichem Ladevorgang aufgezeichnet (d. h. wenn du zum Ende der Seite scrollst und ein neuer Satz an Beiträgen automatisch geladen wird). Wenn der Website-Betreiber die Google Analytics-Unterstützung für diese Funktion aktiviert hat, wird mit jedem zusätzlichen Ladevorgang ein Seitenaufruf-Ereignis an das entsprechende Google Analytics-Konto gesendet.
Website-Besucher
Seitenaufrufe werden mit jedem zusätzlichem Ladevorgang aufgezeichnet (d. h. wenn du zum Ende der Seite scrollst und ein neuer Satz an Beiträgen automatisch geladen wird). Wenn der Website-Betreiber die Google Analytics-Unterstützung für diese Funktion aktiviert hat, wird mit jedem zusätzlichen Ladevorgang ein Seitenaufruf-Ereignis an das entsprechende Google Analytics-Konto gesendet.
Synchronisierte Daten (Weitere Informationen)
Website-Betreiber/Benutzer
Wir synchronisieren Optionen, die erkennen, ob die Funktion aktiviert oder deaktiviert ist und ob Google Analytics in diese Funktion integriert ist.
Website-Besucher
Keine.
  • Inhaltsverzeichnis

  • Kategorien