{"id":17762,"date":"2026-08-05T11:04:58","date_gmt":"2026-08-05T05:19:58","guid":{"rendered":"https:\/\/www.bay20.com\/de\/?p=17762"},"modified":"2026-08-05T11:06:36","modified_gmt":"2026-08-05T05:21:36","slug":"wie-ersetzt-man-in-bigcommerce-die-paginierung-durch-unendliches-scrollen","status":"publish","type":"post","link":"https:\/\/www.bay20.com\/de\/wie-ersetzt-man-in-bigcommerce-die-paginierung-durch-unendliches-scrollen\/","title":{"rendered":"Wie ersetzt man in BigCommerce die Paginierung durch unendliches Scrollen?"},"content":{"rendered":"\n<p>Wenn Sie schon einmal eine Kategorieseite in <strong><a href=\"https:\/\/www.bay20.com\/de\/bigcommerce-entwicklungsunternehmen\/\" target=\"_blank\" rel=\"noopener\" title=\"\">BigCommerce<\/a><\/strong> erstellt haben, kennen Sie die Standardkonfiguration. Die Produkte werden in einem Raster angezeigt, und unten befindet sich eine Reihe mit Seitenzahlen. Klicken Sie auf \u201e2\u201c, warten Sie, bis die Seite neu geladen ist, klicken Sie auf \u201e3\u201c und warten Sie erneut. Das funktioniert zwar, entspricht aber nicht mehr unbedingt einem modernen Einkaufserlebnis. Viele Kunden w\u00fcnschen sich stattdessen \u201eInfinite Scroll\u201c, bei dem neue Produkte beim Herunterscrollen nachgeladen werden. Bei einem Cornerstone-Theme ist das einfacher umzusetzen, als es klingt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"352\" src=\"https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-980x352.png\" alt=\"\" class=\"wp-image-17763\" srcset=\"https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-980x352.png 980w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-300x108.png 300w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-768x276.png 768w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-1000x359.png 1000w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12-800x287.png 800w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2026\/08\/image-12.png 1352w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wie funktioniert das?<\/strong><\/h2>\n\n\n\n<p>Die Paginierung von BigCommerce bietet dir bereits alles, was du brauchst. Jede Seitenzahl ist lediglich ein Link mit einem href, zum Beispiel \/shop-all\/?page=2. Anstatt also eine komplexe API-Integration zu entwickeln, rufst du diese Seite im Hintergrund ab, extrahierst das Produktraster daraus und f\u00fcgst diese Produkte zum aktuellen Raster hinzu. \u00dcbernehmen Sie anschlie\u00dfend die Paginierung von dieser abgerufenen Seite und ersetzen Sie damit die alte, damit Sie immer wissen, wohin der \u201eWeiter\u201c-Link f\u00fchrt. Kein Neuladen der Seite, keine sichtbaren Seitenzahlen \u2013 die Produkte erscheinen einfach beim Scrollen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Schritt 1: Blenden Sie die Paginierung aus, lassen Sie sie aber auf der Seite<\/strong><\/h3>\n\n\n\n<p>Entfernen Sie das Paginierungs-Markup nicht. Blenden Sie es lediglich mithilfe der Cornerstone-Klasse \u201eu-hiddenVisually\u201c optisch aus. Auf diese Weise ist die Paginierung weiterhin vorhanden und funktioniert auch dann, wenn JavaScript aus irgendeinem Grund nicht geladen werden kann oder eine Suchmaschine die Seite crawlt. Das ist eine praktische Fallback-L\u00f6sung, die man kostenlos nutzen kann.<\/p>\n\n\n\n<p><strong>Schritt 2: F\u00fcgen Sie ein Sentinel-Element hinzu<\/strong><\/p>\n\n\n\n<p>F\u00fcgen Sie direkt nach dem Produktraster ein leeres `div`-Element ein. Seine einzige Aufgabe besteht darin, Ihnen mitzuteilen, wann der Nutzer fast bis zum Ende der Seite gescrollt hat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let sentinel = document.createElement('div');\nsentinel.id = 'infinite-scroll-sentinel';\ngrid.insertAdjacentElement('afterend', sentinel);<\/code><\/pre>\n\n\n\n<p>Versuchen Sie nicht, die Paginierungsschaltfl\u00e4chen direkt zu \u00fcberwachen. Da diese ausgeblendet sind, l\u00f6st der Browser keine zuverl\u00e4ssigen Scroll-Ereignisse f\u00fcr sie aus. Ein spezielles Sentinel-`div`-Element ist wesentlich vorhersehbarer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Schritt 3: Beobachte das Sentinel-Element mit IntersectionObserver<\/strong><\/h3>\n\n\n\n<p>Dies ist die Browser-API, die dir mitteilt, wann ein Element in den Viewport gelangt. Verwende sie, anstatt selbst auf Scroll-Ereignisse zu warten, da der Browser alle leistungsrelevanten Aspekte f\u00fcr dich \u00fcbernimmt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const observer = new IntersectionObserver((entries) =&gt; {\n    entries.forEach((entry) =&gt; {\n        if (entry.isIntersecting &amp;&amp; !isLoading) loadNextPage();\n    });\n}, {\n    rootMargin: '200px',\n});\n\nobserver.observe(sentinel);<\/code><\/pre>\n\n\n\n<p>Der Teil \u201erootMargin: \u201a200px\u2018\u201c bedeutet lediglich, dass das Laden etwas fr\u00fcher beginnt, bevor der Nutzer tats\u00e4chlich den unteren Rand erreicht, sodass keine unangenehme Pause entsteht, in der er leeren Raum sieht.<\/p>\n\n\n\n<p><strong>Schritt 4: Die n\u00e4chste Seite abrufen und die ben\u00f6tigten Daten extrahieren<\/strong><\/p>\n\n\n\n<p>Wenn der Sentinel in den Sichtbereich gelangt, rufe die URL aus dem aktuellen \u201eWeiter\u201c-Link der Paginierung ab, analysiere den zur\u00fcckgegebenen HTML-Code und extrahiere daraus das Produktraster und den Paginierungsblock.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const res = await fetch(nextUrl);\nconst html = await res.text();\nconst doc = new DOMParser().parseFromString(html, 'text\/html');\nconst newGrid = doc.querySelector('.productGrid');\nconst newPagination = doc.querySelector('.pagination');<\/code><\/pre>\n\n\n\n<p>F\u00fcge dann die neuen Produkte zum bestehenden Raster hinzu und ersetze den alten Paginierungsblock durch den frisch abgerufenen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Array.from(newGrid.children).forEach((li) =&gt; grid.appendChild(li));\npagination.replaceWith(newPagination);<\/code><\/pre>\n\n\n\n<p>Wir ersetzen die Paginierung, anstatt lediglich einmal den href-Link auszulesen und die Seitenzahl selbst zu erh\u00f6hen, da BigCommerce auf jeder abgerufenen Seite bereits genau angibt, wie der n\u00e4chste Link lautet. Sie m\u00fcssen keine Berechnungen zur Seitenzahl anstellen, und die Funktion h\u00f6rt automatisch auf zu funktionieren, sobald keine n\u00e4chste Seite mehr zu finden ist.<\/p>\n\n\n\n<p><strong>Schritt 5: Wissen, wann man aufh\u00f6ren muss<\/strong><\/p>\n\n\n\n<p>Auf der letzten Seite rendert BigCommerce schlichtweg \u00fcberhaupt keinen \u201eWeiter\u201c-Link. Die Abbruchbedingung ist also kinderleicht: Wenn in der gerade abgerufenen Paginierung kein \u201eWeiter\u201c-Link vorhanden ist, trennen Sie den Observer, und schon sind Sie fertig.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const nextLink = pagination.querySelector('.pagination-item--next a');\nif (!nextLink) observer.disconnect();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was zu beachten ist<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Doppelte Ladevorg\u00e4nge.<\/strong> Wenn jemand schnell scrollt, kann der Sentinel den Observer mehrmals ausl\u00f6sen, noch bevor der Abruf \u00fcberhaupt abgeschlossen ist. F\u00fcgen Sie um den Abrufaufruf herum ein einfaches \u201eisLoading\u201c-Flag ein, um zu verhindern, dass Produkte doppelt hinzugef\u00fcgt werden.<\/li>\n\n\n\n<li><strong>Facettensuche und Sortierung.<\/strong> Wenn das Theme Filter oder ein Sortier-Dropdown enth\u00e4lt, ersetzen diese in der Regel das gesamte Produktraster durch einen eigenen AJAX-Aufruf. Die Einrichtung des Infinite Scroll muss danach erneut ausgef\u00fchrt werden, da sie sonst weiterhin einen Sentinel \u00fcberwacht, der nicht mehr existiert \u2013 oder schlimmer noch, einen, der an alte Produkte gebunden ist. Haken Sie sich in das Ereignis ein, das die facettierte Suche ausl\u00f6st, wenn sie das Rendern abgeschlossen hat, und f\u00fchren Sie die Setup-Funktion f\u00fcr das aktualisierte Raster erneut aus.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Lohnt es sich?<\/strong><\/h2>\n\n\n\n<p>F\u00fcr die meisten Shops ja, insbesondere f\u00fcr solche mit vielen Produkten in einer Kategorie, bei denen das Durchklicken der Seiten auf Mobilger\u00e4ten m\u00fchsam ist. Allerdings ist das unendliche Scrollen nicht immer die richtige Wahl. Wenn die Fu\u00dfzeile oder ein Bereich \u201eNach Kategorie einkaufen\u201c unterhalb des Rasters f\u00fcr die Navigation oder SEO wichtig ist, kann das unendliche Scrollen diese Elemente f\u00fcr immer verbergen. Es lohnt sich, dies mit dem Kunden vor der Umsetzung zu besprechen, nicht erst danach.<\/p>\n\n\n\n<p>Insgesamt handelt es sich hierbei um eine jener Funktionen, die zun\u00e4chst nach einer umfangreichen Neuprogrammierung klingen, am Ende aber vielleicht achtzig Zeilen JavaScript umfassen, wobei der Gro\u00dfteil davon lediglich die sorgf\u00e4ltige Handhabung eines Fetch-Aufrufs ist.<\/p>\n\n\n\n<p>Bitte kontaktieren Sie uns unter <strong>manish@bay20.com<\/strong> oder rufen Sie uns unter <strong>+91-9582784309 oder +91-8800519180<\/strong> an, wenn Sie Unterst\u00fctzung im Zusammenhang mit <strong><a href=\"https:\/\/www.bay20.com\/de\/digitales-marketing-unternehmen\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Bigcommerce<\/a><\/strong> ben\u00f6tigen. Sie k\u00f6nnen auch unsere Website besuchen, um sich \u00fcber unsere Dienstleistungen zu informieren.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie schon einmal eine Kategorieseite in BigCommerce erstellt haben, kennen Sie die Standardkonfiguration. Die Produkte werden in einem Raster angezeigt, und unten befindet sich eine Reihe mit Seitenzahlen. Klicken Sie auf \u201e2\u201c, warten Sie, bis die Seite neu geladen ist, klicken Sie auf \u201e3\u201c und warten Sie erneut. Das funktioniert zwar, entspricht aber nicht [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17711,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[175],"class_list":["post-17762","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bigcommerce","tag-bigcommerce"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/17762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/comments?post=17762"}],"version-history":[{"count":2,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/17762\/revisions"}],"predecessor-version":[{"id":17765,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/17762\/revisions\/17765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media\/17711"}],"wp:attachment":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media?parent=17762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/categories?post=17762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/tags?post=17762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}