Dela upp dina flöden på flera sidor
Hur man paginerar egenbyggda XML-flöden från målsidor med frågeparametern ?p=. Undvik timeouts på stora feeds.
Om du bygger ett flöde själv via en landningssida kan det bli så stort att systemet inte kan generera hela filen på en gång. Resultatet blir timeouts, tomma filer eller feed-mottagare som inte kan läsa XML. Lösningen är att dela upp feeden i flera mindre sidor med en enkel query-parameter i URL:en.
Den här guiden förklarar hur du paginerar ditt flöde på rätt sätt, vilken parameter du ska använda och hur du hämtar alla sidor från en extern server.
Viktigt: Parametern kallas p. Om du använder ?page= istället ignoreras parametern och du får den första sidan varje gång.
Så här paginerar du ditt flöde
Lägg till ?p= följt av ett sidnummer i feed-URL:en. Sidantalet börjar på 0, så ?p=0 är den första sidan, ?p=1 är den andra sidan och så vidare:
https://dinshop.dk/landingsside-feed (samma som ?p=0) https://dinshop.dk/landingsside-feed?p=0 (första sidan) https://dinshop.dk/landingsside-feed?p=1 (andra sidan) https://dinshop.dk/landingsside-feed?p=2 (tredje sidan)
Antalet produkter per sida styrs av den gräns som du anger på själva landningssidan. Du fortsätter att öka sidantalet tills sidan inte längre returnerar några fler produkter.
Obs: Om sidantalet är högre än antalet sidor som faktiskt finns kommer Shoporama antingen att returnera en tom sida eller omdirigera tillbaka till den första sidan. Stoppa därför pagineringen så snart en sida returnerar 0 produkter.
När är detta nödvändigt?
- Flöden med många produkter kan få timeout eller ta slut på minnet om hela filen genereras på en gång
- Partnernätverk som Google Shopping och Partner Ads kan ta emot feeds som är uppdelade på flera webbadresser
- Förbättrar prestandan och minskar risken för fel eftersom varje sida genereras snabbt
- Det gör det enklare att felsöka ett segment i taget om något går fel
Exempel: Hämta alla sidor i ett skript
Om du hämtar ditt flöde från en extern server (t.ex. i en partner-cronuppgift eller ditt eget skript) kan du loopa tills det inte finns några fler produkter:
$page = 0; while (true) { $url = "https://dinshop.dk/landingsside-feed?p=".$page; $xml = file_get_contents($url); if (empty(trim($xml)) || stristr($xml, "<item>") === false) { break; } // spara eller bearbeta innehållet här $page++; }
Använd den tagg som markerar en produkt i ditt specifika flödesformat. I exemplet är det <item>, men det kan också vara <product> eller något helt annat, beroende på din egen mall.
Paginering i blogg- och produktlistor
Samma ?p=-konvention används också i din e-handelsblogg och på vanliga landningssidor för produkter. Det är ett vanligt mönster i hela Shoporama, så du kan återanvända samma logik överallt.
Använd med externa feed-mottagare
De flesta feed-mottagare (Google Merchant Centre, Partner Ads, Pricerunner etc.) accepterar antingen flera feed-URL:er eller så kan du kombinera dem till en enda fil innan du skickar in den. Fråga din annonseringspartner vilken inställning de föredrar.
Tips: Om du använder en av Shoporamas inbyggda feeds (Google Shopping, Pricerunner, etc.) hanteras uppdelningen automatiskt och du behöver inte oroa dig för paginering.
Vanliga frågor och svar
Varför heter parametern p och inte page?
Det är ett historiskt val i Shoporamas frontend. Den korta formen p används på bloggar, landningssidor och flöden. Använd därför alltid ?p=. Om du skriver ?page= ignoreras parametern och du får den första sidan varje gång utan något felmeddelande.
Börjar sidräkningen vid 0 eller 1?
Vid 0. ?p=0 ger den första sidan, ?p=1 ger den andra sidan och så vidare. URL:en utan någon parameter alls ger också första sidan.
Hur många produkter finns det på en sida?
Detta styrs av landningssidans gräns. Du hittar fältet under Innehåll, Landningssidor i din admin när du redigerar landningssidan i fråga. En bra utgångspunkt är 500 till 1000 produkter per sida, men det beror på hur tung din produktdata är.
Vad gör jag om mitt flöde fortfarande är för långsamt?
Sänk antalet produkter per sida och kör fler anrop istället. Se samtidigt till att du inte inkluderar för många dyra fält, t.ex. beräkningar som inte cachas eller komplicerade if-konstruktioner i din XML-mall. Har du fortfarande problem? Skriv till support@shoporama.dk så tar vi en titt.
Hur vet jag att jag har laddat ner alla sidor?
När en sida returnerar en tom lista eller omdirigerar dig tillbaka till första sidan finns det inga fler produkter. Stoppa slingan där. Detta är säkrast eftersom Shoporama hanterar överflödet till den första sidan själv.
Kan jag skicka en enda URL till Google Merchant Centre?
Om du använder Shoporamas inbyggda Google Shopping-flöde, ja. Om du använder ett egenbyggt flöde via en målsida måste du antingen skicka in flera webbadresser eller slå samman sidorna till en fil själv innan du laddar upp. Fråga din partner vad de föredrar.
Kommer jag att få dubbletter om en produkt byter sida mellan två anrop?
Detta kan hända om nya produkter skapas eller tas bort medan flödet laddas ner. Sannolikheten är liten i praktiken, men om du vill vara helt säker, kör hela pagineringen nära varandra eller deduplicera på id efter att ha samlat in alla sidor.
Kan jag paginera min e-handelsblogg på samma sätt?
Ja, det kan du göra. Bloggen använder samma ?p=-parameter med 10 inlägg per sida som standard. Det är samma mönster, så dina pagineringslänkar i temat kan återanvända logiken.
Ska jag sätta canonical-taggar på de paginerade sidorna?
På normala landningssidor ställer Shoporama automatiskt in den kanoniska taggen så att den inkluderar parametern ?p=, så varje sida har sin egen kanoniska. På självbyggda flöden är detta vanligtvis inte något du behöver oroa dig för eftersom flödet konsumeras av ett skript och inte indexeras av sökmotorer.
Vad händer om min annonspartner inte kan hantera flera webbadresser?
Då måste du själv sammanställa sidorna till en fil innan du skickar in den. Skapa ett litet skript som hämtar alla sidor, tar bort XML-headern från sidan 2 och framåt och sammanställer allt till en giltig XML-fil som du sparar på din egen server. Använd sedan den kompilerade filens URL hos partnern.
Behöver du hjälp? Kontakta oss på support@shoporama.dk.
Relaterade artiklar
Skapa dina egna flöden
Guide till hur du bygger dina egna produktflöden i CSV-, XML- eller JSON-format med Shoporamas anpassade flödesfunktion.
Konfigurera Google Shopping-flöde
Guide för att ställa in Google Shopping Feed i Shoporama så att dina produkter visas i Google Shopping.
Priceshape feed
Guide till hur du sätter upp en Priceshape-feed på din Shoporama-webbshop via en XML-fil och en landningssida.
Inkludera färg och storlek i Partner Ads-flödet
Guide till hur du lägger till färg, storlek och kön i ditt Partner Ads-flöde i Shoporama via produktprofiler och extra fält.
Bilder på landningssidor
Så här laddar du upp bilder till en Shoporama-landningssida och visar dem korrekt i ditt tema med getImages() och getSrc().
Blogg länkad till din butik
Komplett guide till bloggfunktionen i Shoporama - skapa inlägg, schemalägg publicering, länka produkter, optimera för sökmotorer och använd...
Relaterade funktioner
Anpassade flöden
Skapa anpassade produktfeeds i XML, JSON eller CSV. Välj fält, filtrera produkter, expandera varianter och dela upp feeds i sidor.
Flöden
Färdiga feeds för Google Shopping, Pricerunner, Partner Ads, Kelkoo och TradeTracker. Eller bygg dina egna anpassade feeds i XML eller CSV.