Nødsituasjon

I nødstilfeller eller ved driftsstans kan du sende en SMS til vår nødtelefon

Vakttelefon (kun SMS)

+45 29 70 15 95

Send en SMS med følgende informasjon:

  • Ditt navn og nettbutikk
  • Beskrivelse av problemet
  • Telefonnummeret ditt for tilbakeringing

Notater: Denne tjenesten er kun for kritiske situasjoner der nettbutikken din er nede eller har alvorlige problemer. For vanlig support, vennligst bruk våre normale supportkanaler.

Del inn feedene dine på flere sider

Slik deler du et selvlaget XML-feed fra en landingsside opp i flere sider. Parameteren bestemmes av din egen feed-mal.

Lesetid: ca. {åtte} minutter
Shopejer Utvikler

Hvis du lager din egen feed via en landingsside, kan den bli veldig stor. Virkelig stort. Noen feed-mottakere vil derfor helst hente det i mindre porsjoner i stedet for som én enorm fil, og dette kalles paginering: du deler opp feedet i flere sider, som hentes én om gangen.

Denne veiledningen forklarer hvordan paginering fungerer i selvlagde feeds, hvordan du setter det opp i feed-malen din, og hva du må være oppmerksom på når du sender URL-ene videre til for eksempel DataFeedWatch, Partner Ads eller Google Merchant Center.

Det viktigste først: Det finnes ikke én fast pagineringsparameter for selvbygde feeds. Det er din egen feed-mal som bestemmer hva parameteren heter, og hvor mange produkter det er på en side. Shoporama sender ganske enkelt alle parametrene fra URL-en videre til malen.

Slik henger et selvlaget feed sammen

En selvlaget feed består av to deler:

  • En landingsside som bestemmer hvilke produkter som skal vises. Du finner den under Innhold, Landingssider.
  • En XML-mal i temaet ditt som bestemmer hvordan feedet ser ut. Filnavnet skriver du inn i feltet «XML-filnavn» under overskriften «Egen XML» når du redigerer landingssiden.

Feeden ligger deretter på landingssidens adresse med .xml lagt til på slutten, f.eks. https://dinshop.dk/mit-feed.xml.

Siden det er din mal som bygger opp innholdet, er det også den som må kunne dele opp feeden. Det finnes ingen innebygd sideinndeling som aktiveres automatisk.

Slik paginerer du feedet ditt

Alle parametere i URL-en er tilgjengelige i malen via variabelen $get. Hvis du for eksempel henter inn ?page=2, kan malen lese verdien som $get.page. Du velger selv navnet: page, side, offset eller noe helt annet fungerer like bra.

Nedenfor er et enkelt eksempel med 500 produkter per side, der sidetellingen starter på 0:

<{$per_page = 500}>
<{$page = $get.page|default:0}>
<{$offset = $page * $per_page}>

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<{foreach $landing_page->getProducts($per_page, $offset) as $product}>
  <item>
    <g:id><{$product->getProductId()}></g:id>
    <title><{$product->getName()|escape}></title>
  </item>
<{/foreach}>
</channel>
</rss>

De to tallene du sender til getProducts(), er antall produkter og hvor mange som skal hoppes over. Side 0 hopper over 0, side 1 hopper over 500, side 2 hopper over 1000 og så videre. Når en side ikke returnerer flere produkter, har du nådd slutten.

Merk: I feed-maler må du bruke $get. Hvis du skriver $smarty.get, får du ingenting, fordi nettbutikkmaler kjører i sikker modus. Hvis temaet ditt kjører på Smarty 2, må tilordningene dessuten skrives som <{assign var="page" value=$get.page}>.

Hvor mange produkter skal det være per side?

Det bestemmer du selv i malen. Feltet «Antall produkter på landingssiden» styrer visningen av landingssiden som en vanlig HTML-side, men det brukes ikke automatisk i ditt eget XML-feed.

Et fornuftig utgangspunkt er 300 til 1000 produkter per side. Har du mange varianter, omfattende beskrivelser eller mange bilder per produkt, bør du velge det laveste tallet. Husk at en side i feedet godt kan inneholde flere linjer enn produkter, dersom malen din skriver én linje per variant.

Hent alle sider i et skript

Hvis du selv skal hente feedet fra en annen server, kan du bruke en løkke til du kommer til en side som ikke lenger inneholder produkter:

$page = 0;
while (true) {
    $url = "https://dinshop.dk/mit-feed.xml?page=".$page;
    $xml = file_get_contents($url);

    if (empty(trim($xml)) || stristr($xml, "<item>") === false) {
        break;
    }

    // lagre eller bearbeid innholdet her
    $page++;
}

Bruk den taggen som markerer et produkt i akkurat din feed. I eksemplet er det <item>, men det kan også være <product> eller noe helt annet.

Vær oppmerksom på forskjellen mellom side 0 og side 1

Den vanligste feilen i praksis er at feedet og mottakeren ikke er enige om hvor tellingen starter. Hvis malen din starter på 0, mens feedmottakeren henter side 1, 2, 3 og videre, vil de første produktene i feedet mangle helt uten at noen får en feilmelding.

Vær derfor oppmerksom på to ting:

  • URL-en uten parameter tilsvarer den første siden, fordi malen vanligvis faller tilbake til 0. Noen feed-mottakere henter nettopp denne som første side, og starter deretter ved 1.
  • Hvis du heller vil telle fra 1, trekker du 1 fra i malen: <{$offset = ($page - 1) * $per_page}>. Da passer det for mottakere som alltid starter på side 1.

Sjekk alltid etter oppsettet at det første produktet på første side faktisk er det første produktet på landingssiden.

Hastighet: Feeden bygges automatisk i bakgrunnen

Hvis du henter feed-URL-en uten parametere, leverer Shoporama en ferdiggenerert fil. Den genereres automatisk i bakgrunnen når produktene dine endres, og den ryddes også når du redigerer selve landingssiden. Derfor er hentingen uten parametre både rask og skånsom, uansett hvor stort feedet er.

Hvis du sender med parametre, kan svaret ikke hentes fra den filen, fordi du da ber om noe annet enn hele feedet. Slike hentinger genereres derfor på stedet. Det er helt greit når hver side bare inneholder en del av katalogen, men det er også grunnen til at det ikke lønner seg å dele opp feedet hvis mottakeren uten problemer kan ta imot det i ett stykke.

Tips: Hvis feed-mottakeren din ikke trenger sideinndeling, så gi dem den rene URL-en uten parametere. Det er den raskeste og mest stabile måten å hente et stort feed på.

Feeder som ikke kan pagineres

Sideinndeling gjelder kun feeds du selv bygger med en XML-mal. To andre feed-typer i Shoporama kan ikke deles opp, og det er heller ikke behov for det:

  • Google Shopping-feeden på en landingsside (adressen som slutter på .rss) inneholder alltid alle produktene på landingssiden og bygges automatisk i bakgrunnen.
  • Produktfeeder under Produkter, Produktfeeder bygges også i bakgrunnen og leveres alltid som én samlet fil. Les mer i artikkelen Bygg dine egne feeder.

Sideinndeling på landingssider og blogg

Vanlige landingssider og nettbutikkens blogg har derimot en fast parameter som fungerer uten at du trenger å gjøre noe: ?p=, der tellingen starter på 0.

https://dinshop.dk/min-landingsside        (det samme som ?p=0)
https://dinshop.dk/min-landingsside?p=1    (annen side)
https://dinshop.dk/blog?p=1                (annen side i bloggen)

På landingssider styres antallet per side av feltet «Antall produkter», men maksimalt 500 om gangen. Bloggen viser 10 innlegg per side. Det er kun disse HTML-sidene som bruker «?p=». I ditt eget XML-feed har parameteren ingen betydning, med mindre malen din selv leser den.

Ofte stilte spørsmål

Hvilken parameter skal jeg bruke til feedet mitt?

Den som feed-malen din leser. Hvis du har fått temaet laget av en utvikler, kan du spørre dem eller se i XML-filen som er nevnt i feltet «XML-filnavn» på landingssiden. De vanligste er ?page= og kombinasjonen ?limit= og ?offset=.

Jeg får det samme innholdet på alle sidene. Hva er feilen?

Da leser ikke malen din parameteren. Hent to sider og sammenlign de første produktene på hver: hvis de er like, ignorerer malen sideinndelingen og viser hele katalogen hver gang. Dette må rettes i selve malen, som vist i eksemplet ovenfor. Alternativt kan du bare hente feedet uten parametere som én fil.

Starter sidetellingen på 0 eller 1?

Det bestemmes av malen din. Standardeksemplet ovenfor starter ved 0, der URL-en uten parametere er første side. Sørg for at feed-mottakeren starter på samme sted, ellers blir den første delen av produktene hoppet over.

Hvordan vet jeg at jeg har hentet alle sidene?

Når en side ikke lenger inneholder produkter, er det ikke flere. Stopp løkken der. Du kan også la malen skrive ut det totale antallet med $landing_page->getProductCount(), slik at mottakeren kan beregne antall sider på forhånd.

Får jeg duplikater hvis et produkt bytter side underveis?

Det kan skje hvis produkter opprettes eller fjernes mens du henter sidene. Sannsynligheten er liten, men hvis du vil være helt sikker, bør du hente alle sidene tett etter hverandre, eller fjerne duplikater basert på produkt-ID etter at du har samlet dem. Vær oppmerksom på at noen feed-verktøy ikke fjerner duplikater selv, og at en gjentatt produkt-ID kan føre til at for eksempel Meta avviser hele feedet.

Kan jeg sende én samlet URL til Google Merchant Center?

Ja. Send feed-URL-en uten parametere, så får du hele feedet som én fil. Oppdeling i sider er kun nødvendig hvis mottakeren uttrykkelig ber om det.

Bør jeg i det hele tatt dele opp feedet mitt i dag?

Sjelden. Fordi den parameterfrie hentingen leveres som en ferdigpakket fil, går det raskt å hente selv svært store feeds. Del den bare opp hvis mottakeren krever det, eller hvis du henter feedet inn i et system som ikke takler én stor fil.

Kan jeg bruke det samme for CSV eller JSON?

Feltet på landingssiden heter «XML-filnavn», men malen kan skrive akkurat det formatet du ønsker, inkludert CSV eller JSON. Hvis du skal bruke et ekte CSV- eller JSON-feed uten å skrive en mal selv, er Produktfeeds som regel den enkleste løsningen.

Hva gjør jeg hvis annonsepartneren min ikke kan håndtere flere URL-er?

Da gir du dem den parameterfrie URL-en som inneholder hele feeden. Hvis sidene til slutt skal samles hos deg selv, må du huske å fjerne XML-headeren fra side to og utover, slik at filen forblir gyldig XML.

Trenger du hjelp? Kontakt oss på support@shoporama.dk.