Nödsituation

Vid nödsituationer eller driftstörningar kan du skicka ett SMS till vår jourtelefon

Jourtelefon (endast SMS)

+45 29 70 15 95

Skicka ett SMS med följande information:

  • Ditt namn och din webbshop
  • Beskrivning av problemet
  • Ditt telefonnummer för återuppringning

Anteckningar: Denna tjänst är endast avsedd för kritiska situationer där din webbshop ligger nere eller har allvarliga problem. För vanlig support, vänligen använd våra normala supportkanaler.

Implementera strukturerad data (Schema.org) i ditt Shoporama-tema

Komplett guide till JSON-LD-strukturerad data i ett Shoporama-tema. Smarty-exempel för Product, Store, BreadcrumbList och AggregateRating med korrekta säkra metoder.

Lästid: ca {åtta} minuter
Shopejer Utvecklare

Strukturerad data (Schema.org) hjälper Google och andra sökmotorer att förstå innehållet på dina sidor. För en webbutik är det särskilt relevant att markera produkter, butiksinformation, brödsmulor och produktrecensioner så att du kan uppnå rich snippets i sökresultaten, t.ex. pris, lagerstatus och stjärnbetyg.

Tips: Shoporama lägger automatiskt till grundläggande Schema.org-markup för produkter via våra inbyggda SEO-funktioner. Läs mer om automatisk strukturerad data och SEO i Shoporama. Den här artikeln är för dig som vill bygga eller utöka markeringen själv i ditt tema.

Vad är strukturerad data?

Strukturerad data är ett standardiserat sätt att beskriva sidinnehåll i ett format som sökmotorer förstår. JSON-LD är det rekommenderade formatet och placeras i en <script type="application/ld+json">-tagg. Det påverkar inte sidans visuella utseende, men förser sökmotorer med strukturerad information som kan användas för rich snippets.

Rätt säkra metoder på SafeProduct, SafeWebshop och SafeCompany

Innan du bygger din egen JSON-LD-markup är det viktigt att känna till de säkra metoder som faktiskt finns på objekten i ett Shoporama-tema. Det här är de stabila metoderna som du kan använda i Smarty.

$product (SafeProduct):

  • getName(), getDescription(), getOwnId(), getGtin (), getMpn(), getBrandName()
  • getPrice(), getSalePrice(), getRealPrice(), getLowest30DayPrice()
  • getStockCount() och getIsInStock()
  • getImage( ) och getImages () returnerar SafeImage med getSrc($w, $h, $type)
  • getAvgRating($no_round), getReviewCount(), getProductReviews($limit)
  • getUrl() ger den relativa sökvägen till produkten

$webshop (SafeWebshop):

  • getName(), getDescription(), getCurrency(), getUrl(), getLogo ()
  • getCompany() returnerar SafeCompany

$webshop->getCompany() (SafeCompany):

  • getName(), getRegNr(), getEmail(), getPhone()
  • getAddress(), getZipcode(), getCity(), getCountry()

Obs: Använd inte $product->getStock(), $product->getAverageRating(), $webshop->getCurrencyCode(), $webshop->getDomain(), $webshop->getEmail() eller $webshop->getPhone ( ). De finns inte som säkra metoder och ditt tema kommer att misslyckas. Använd istället getStockCount(), getAvgRating (), getCurrency(), getUrl () och getCompany()->getEmail()/getPhone().

Produktmarkering (Produkt)

Den viktigaste typen för en webbutik är produktmarkeringen. Infoga blocket i din produktmall (vanligtvis product/view.html):

<script type="application/ld+json"> { "@context": "https://schema.org","@type":"Produkt","name":"<{$product->getName()|escape:'javascript'}>","description":"<{$product->getDescription()|strip_tags|escape:'javascript'}>","sku":"<{$product->getOwnId()|escape:'javascript'}>", <{if $product->getGtin()}> "gtin": "<{$product->getGtin()|escape:'javascript'}>", <{/if}> <{if $product->getMpn()}> "mpn": "<{$product->getMpn()|escape:'javascript'}>", <{/if}> <{if $product->getBrandName()}> "brand": { "@type":"Brand", "name":"<{$product->getBrandName()|escape:'javascript'}>" }, <{/if}> <{if $product->getImage()}> "image": "<{$product->getImage()->getSrc(800, 800, 'fit')}>", <{/if}> "offers": { "@type":"Erbjudande", "url": "<{$webshop->getUrl()}><{$product->getUrl()}>>", "price": "<{$product->getRealPrice()|string_format:"%.2f"}>","priceCurrency":"<{$webshop->getCurrency()}>","availability":"<{if $product->getStockCount() > 0}>https://schema.org/InStock<{else}>https://schema.org/OutOfStock<{/if}>" } </script>

Tre viktiga punkter i exemplet:

  • Priset hämtas med getRealPrice(), så eventuella reapriser och rabatter inkluderas och moms läggs till.
  • Valuta hämtas med getCurrency()$webshop (returnerar t.ex. "DKK" eller "EUR").
  • Lagerstatus bestäms med getStockCount(). Du kan också använda getIsInStock() om du vill tillåta försäljning av lagerförda produkter med 0 i lager.

Förhandspris (Omnibus-direktiv)

Om produkten är på rea rekommenderar Google att du visar det lägsta priset för de senaste 30 dagarna som referenspris. Använd getLowest30DayPrice() för att hämta det. Den returnerar null om det inte finns tillräckligt med prishistorik.

Produktrecensioner (AggregateRating)

Om du använder Shoporamas inbyggda granskningssystem kan du lägga till ett genomsnittligt betyg direkt i produktmarkeringen. Detta kan ge stjärnor i Googles sökresultat. Infoga blocket inuti Product-objektet:

<{if $product->getReviewCount() > 0}>, "aggregateRating": { "@type":"AggregateRating", "ratingValue":"<{$product->getAvgRating(true)|string_format:"%.1f"}>", "reviewCount": "<{$product->getReviewCount()}>" } <{/if}>

Parametern true till getAvgRating() ger ett oavrundat genomsnitt, vilket Google föredrar (t.ex. 4,3 i stället för bara 4).

Information om butiken (butik / lokalt företag)

Du kan också markera själva webbshoppen, till exempel i din sidfotsmall. Hämta kontaktuppgifter från $webshop->getCompany() så att den information du redan har ställt in under Inställningar, Företagsinformation automatiskt inkluderas:

<{$company = $webshop->getCompany()}> <script type="application/ld+json"> { "@context": "https://schema.org","@type":"Store","name":"<{$webshop->getName()|escape:'javascript'}>","url": "<{$webshop->getUrl()}>" <{if $company}> , <{if $company->getEmail()}> "email": "<{$company->getEmail()|escape:'javascript'}>", <{/if}> <{if $company->getPhone()}> "phone": "<{$company->getPhone()|escape:'javascript'}>", <{/if}> "address": { "@type":"PostalAddress", "streetAddress": "<{$company->getAddress()|escape:'javascript'}>", "postalCode": "<{$company->getZipcode()|escape:'javascript'}>", "addressLocality": "<{$company->getCity()|escape:'javascript'}>", "addressCountry": "<{$company->getCountry()|escape:'javascript'}>" } <{/if}> <{if $webshop->getLogo()}> , "logo": "<{$webshop->getLogo()->getSrc(400, 400, 'fit')}>" <{/if}> }

Se till att företagsuppgifterna är korrekt ifyllda i admin under Inställningar, Företagsuppgifter. Om du har en fysisk butik kan du använda LocalBusiness eller en mer specifik subtyp (t.ex. ClothingStore) som @type.

Brödsmulor (BreadcrumbList)

På produkt- och kategorisidor är det bra SEO-praxis att markera brödsmulor. Exempel för en produkt med huvudkategori:

<{if $product->getMainCategory()}> <script type="application/ld+json"> { "@context": "https://schema.org","@type":"BreadcrumbList","itemListElement": [ { { "@type":"ListItem","position": 1,"name":"<{$webshop->getName()|escape:'javascript'}>","item": "<{$webshop->getUrl()}>" }, { "@type":"ListItem","position": 2,"name":"<{$product->getMainCategory()->getName()|escape:'javascript'}>","item":"<{$webshop->getUrl()}><{$product->getMainCategory()->getUrl()}>" }, { "@type": "ListItem","position": 3, "name": "<{$product->getName()|escape:'javascript'}>", "item": "<{$webshop->getUrl()}><{$product->getUrl()}>" } ] } </script> <{/if}

Testa dina strukturerade data

Använd verktygen Google och Schema.org för att validera din uppmärkning innan du går live:

  • Rich Results Test kontrollerar om din uppmärkning ger rika utdrag i Google
  • Schema Markup Validator validerar JSON-LD-syntaxen
  • I Google Search Console kan du se rapporter om dina produkter och rika resultat efter att sidorna har genomsökts

Tips: Om du redan har aktiverat automatisk strukturerad data i Shoporama, se till att undvika dubbletter. Kontrollera vad som redan finns på sidan innan du lägger till din egen markering.

Vanliga frågor och svar

Behöver jag ens koda JSON-LD själv?

Nej, inte nödvändigtvis. Shoporama har inbyggd automatisk strukturerad data för produkter, och det täcker det mesta. Självkodning är främst relevant om du vill lägga till ytterligare fält eller använda en mer specifik @typ, till exempel för hotell, restauranger eller evenemang.

Vilka schematyper kan jag använda förutom Product?

I ett Shoporama-tema kan du bygga alla Schema.org-typer som finns som JSON-LD. De vanligaste för e-handel är Product, Offer, AggregateRating, Review, BreadcrumbList, Store, LocalBusiness, Organisation, WebSite med SearchAction och FAQPage för fasta FAQ-sidor.

Varför får jag fel i Rich Results Test?

Typiska fel är fält som saknas (t.ex. pris utan priceCurrency), felaktig formatering av siffror eller citat som bryter mot JSON-syntaxen. Använd alltid |escape:'javascript' på alla textvärden i Smarty.

Hur lång tid tar det innan jag ser stjärnor i Google?

Google behöver genomsöka sidan igen innan din nya uppmärkning används. Detta kan ta från några dagar till några veckor. I Search Console kan du begära snabb omindexering av enskilda sidor.

Påverkar det min ranking i Google?

Strukturerad data är inte en direkt rankingfaktor, men rich snippets som pris och stjärnor gör ditt sökresultat mer synligt och kan öka klickfrekvensen. I det långa loppet bidrar det till att förbättra din övergripande SEO.

Hur hanterar jag moms i prisfältet?

Använd getRealPrice() som returnerar priset inklusive moms. Det här är det pris som kunden ser i butiken och det pris som Google förväntar sig i produktmarkeringen i en B2C-butik. Om du behöver visa priset exklusive moms (B2B) använder du istället getPriceExVat( ).

Behöver jag recensioner innan jag visar AggregateRating?

Ja, det behöver du. Lägg bara till AggregateRating om produkten faktiskt har recensioner. Exemplet ovan kontrollerar getReviewCount() > 0, så att markering inte läggs till för produkter utan recensioner. Falska eller tomma betyg kan utlösa en bestraffning från Google.

Var hittar jag mina företagsuppgifter för Store markup?

Gå in i administratören under Inställningar, Företagsuppgifter. De uppgifter du fyller i här blir tillgängliga via $webshop->getCompany() i ditt tema, så Store-blocket kommer att fyllas i automatiskt.

Var ska JSON-LD placeras på sidan?

Du kan placera den antingen i <head> eller i <body>. Båda är giltiga enligt Google. För produktsidor är det vanligt att placera den längst ner i produktmallen.

Min webbutik säljer på flera språk. Behöver jag markering per språk?

Ja, namnen och beskrivningarna i markeringen ska återspegla den sida som kunden tittar på. Eftersom $product->getName() och $product->getDescription() automatiskt returnerar den översatta texten för det aktiva språket, sker detta automatiskt när du använder exemplen här.

Behöver du hjälp med strukturerad data? Kontakta oss på support@shoporama.dk.