Nedenfor finner du informasjon om hvordan du utvikler et Shoporama-tema.
Generelt er et Shoporama-tema en serie HTML-filer som ligger i en mappe på ftp-serveren vår. Malspråket i de enkelte filene er Smarty, som er nevnt nedenfor.
Hver mal gir tilgang til en rekke objekter og metoder. Du kan lese mer om dem i vår Mal-API.
Kontakt oss på support@shoporama.dk hvis du har spørsmål.
Motoren i malsystemet vårt er basert på Smarty.
Vi har versjon 2.6 installert av hensyn til bakoverkompatibilitet, men vi vedlikeholder den ikke lenger, og vi anbefaler at alle bruker versjon 4.x. Versjonen angis under innstillinger for butikken.
Vær oppmerksom på at denne dokumentasjonen kun tar hensyn til versjon 4.x.
Forskjellen mellom standard Smarty og vår er at vi bruker <{
og }>
som skilletegn .
Dvs. syntaksen er:
<h1>Velkommen til <{$webshop->getName()|escape}></h1>
Hvis du er usikker på hva en variabel er eller hva en funksjon returnerer, kan du kjøre den gjennom var_dump.
Hvis du har et objekt, vil du alltid kunne se hvilke metoder som er tilgjengelige i mal-API-et vårt.
Du bruker var_dump
på følgende måte:
<{$order|var_dump}>
I noen tilfeller er det relevant å forsikre seg om at hvis du bruker en variabel som et objekt, er den også et objekt. Ellers vil ikke malen fungere. Vi angir noen globale variabler som $product
og$webshop
og andre. For disse variablene er det ikke nødvendig. De kan kontrolleres på en av følgende måter:
<{* Typisk tilstrækkelig *}> <{if $profile}> <{$profile->getName()}> <{/if}> <{* Lidt grundigere *}> <{if is_object($profile)}> <{$profile->getName()}> <{/if}> <{* Meget grundig *}> <{if is_a($profile, "SafeProfile")}> <{$profile->getName()}> <{/if}>
Hvis du vil se hvilke variabler som er tilgjengelige på siden du utvikler, kan du sette Smarty i feilsøkingsmodus og se variablene i et nytt vindu. Lim inn følgende kode i malen din:
<{debug}>
Les mer om Smarty4 her: Smarty 4-dokumentasjon.
Sti | Funksjonalitet |
---|---|
/{navn} |
Hovedmappen for temaet ditt |
/{navn}/components |
Mappe med komponenter for Page Builder |
/{navn}/components/sections.json |
Liste over hvilke seksjoner som kan settes inn på hvilke sider |
/{navn}/components/tags.json |
Tagger som skal brukes i temaet |
/{navn}/components/sections |
Mappe for de enkelte seksjonsfilene |
/{navn}/extensions |
Utvidelser til Shoporamas innebygde datatyper. |
/{navn}/templates |
Mappe for maler |
/{navn}/templates/mails |
Mappe for e-postmaler |
Navngivningen av filer i /{name}/templates
er generelt fri. Det finnes imidlertid noen få unntak:
Sti | Funksjonalitet | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/{navn}/templates/global.html |
Den overordnede siden som inneholder strukturen for hele butikken. Selve innholdet settes inn der denne malen viser <{$contents}>, som er en spesiell variabel som kommer fra index.html nedenfor . En veldig enkelglobal.html kan se slik ut:
<!DOCTYPE html> <html> <head> <title><{$webshop->getName()|escape}></title> </head> <body> <nav> <!-- Din navigation --> </nav> <div> <{$contents}> </div> </body> </html> |
|||||||||||||||||||||||||||||||||||||||
/{navn}/templates/index.html |
Denne malen brukes til å vise innholdet i det du ser nå. Dvs. et produkt, en landingsside eller handlekurven etc. Et forslag til hvordan den kan se ut, er som følger:
<{if $inc}> <{include file=$inc}> <{elseif $category}> <{include file="category.html"}> <{elseif $landing_page}> <{include file="landing_page.html"}> <{elseif $product}> <{include file="product.html"}> <{elseif $page}> <{include file="page.html"}> <{elseif $blog_post}> <{include file="blog_post.html"}> <{/if}> |
|||||||||||||||||||||||||||||||||||||||
/{navn}/templates/printed_invoice.html |
Brukes fra admin hvis du vil skrive ut en følgeseddel. Innholdet i bestillingen vil alltid ligge i variabelen $order. |
|||||||||||||||||||||||||||||||||||||||
/{navn}/templates/mails |
Mappe for e-postmaler. Må inneholde følgende filer:
Generell informasjon om strukturen til e-postmalerI utgangspunktet er alle e-postmaler delt inn i to deler. En del for emnet og en annen del for innholdet. Malen deles inn ved å sjekke om variabelen <{if $subject}> Emnet på mailen <{else}> Indholdet af mailen <{/if}> Med unntak av de to e-postene |
Du kan plassere bilder, stilark osv. hvor du vil, men vi anbefaler at du bruker en struktur som/{navn}/images
og /{navn}/css.
Når du refererer til filene, bruker du variabelen$theme_url,
som inneholder URL-adressen til temaet. Merk at den kan endres, så du kan ikke alltid skrive inn URL-adressen manuelt i temaet ditt. Men variabelen vil alltid fungere. Hvis du vil lenke til bildet/{navn}/images/img.gif
, skriver du derfor<img src="<{$theme_url}>/images/img.gif">.
Shoporama inneholder noen forskjellige datatyper. For eksempel produkter og kategorier. Disse datatypene inneholder noen forhåndsdefinerte felt, for eksempel tittel, beskrivelse og pris. Det er mulig å utvide de vanligste datatypene med egne felt. Utvidelser må plasseres i temaet i filen /{name}/extensions/{datatype}.json,
der de mulige datatypene
er produkt
, landing_page
, kategori
, statisk_side
og blogginnlegg
.
Json-filen må inneholde en matrise
med grupper, der hver gruppe inneholder et antall felt. Formatet er som følger:
Felt | Innhold | Type | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
Navn på gruppen av felt | string |
||||||||||||||||
description |
Lengre beskrivelse | string |
||||||||||||||||
fields |
Array av felt | array |
||||||||||||||||
|
Nedenfor ser du et eksempel på json i filen extensions/product.json:
[ { "name": "Billeder", "description": "Her kan du tilføje billeder", "fields": [ { "title": "Et enkelt billede", "id": "my-image", "type": "image" }, { "title": "En serie af billeder", "id": "my-images", "type": "images" } ] }, { "name": "Indstillinger", "description": "Herunder kan du indstille diverse", "fields": [ { "title": "my-setting", "description": "Vælg flere ..", "id": "tags", "type": "multi", "options": { "foo": "Foo", "bar": "Bar", "baz": "Baz" } } ] } ]
Tilbyr følgende grensesnitt:
For datatyper som støtter utvidelser, må verdiene hentes via metoden getExtensionValue('ID')
, der ID er ID-en
fra json-filen .
Avhengig av datatypen til feltet kan innholdet returneres som en tekst, en matrise eller et objekt:
Materiale: <{$product->getExtensionValue('materiale')}>
Eller..:
<{if $img = $product->getExtensionValue('img')}> <{$img->getSrc(50, 50, 'fit')}> <{/if}>
Eller hvis du vil gå gjennom bilder i en loop:
<{foreach $product->getExtensionValue('my-images') as $image}> <img src="<{$image->getSrc(50, 50, 'box')}>"> <{/foreach}>
Variabel | Innhold | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$webshop |
Generelt objekt som inneholder nettbutikken, men som også inneholder noen funksjoner for å hente ut ulike data fra nettbutikken. Les mer om nettbutikk-objektet. Eksempel på hvordan $webshop brukes til å hente ut en liste med kategorier:<{foreach $webshop->getCategories() as $category}> <{$category->getName()|escape}> <{/foreach}> |
||||||||||||||||||||
$product |
Produktobjektet hvis du ser på en produktside | ||||||||||||||||||||
$category |
Kategoriobjektet hvis en kategori vises | ||||||||||||||||||||
$landing_page |
Landingssideobjekt hvis du er på en landingsside | ||||||||||||||||||||
$page |
Objektet for den statiske siden hvis du er i en av disse | ||||||||||||||||||||
$blog_post |
Blogginnleggsobjektet hvis du ser et blogginnlegg | ||||||||||||||||||||
$inc |
Navnet på den spesielle - ikke dynamiske - siden som kjøres. Verdiene for dette kan være return.html ,
order-return.html ,
return_received.html ,
also.html ,
search.html ,
basket.html ,
address.html ,
shipping.html ,
approve.html ,
payment.html ,
thanks.html ,
order.html ,
product_review.html ,
subscription.html ,
blog.html ,
user-sign-up.html ,
user-sign-in.html ,
user-sign-out.html ,
user-edit.html ,
user-reset-password.html ,
user-profile.html ,
user-orders.html ,
user-points.html ,
user-subscriptions.html ,
user-change-card.html ,
404.html ,
410.html .
Når vi validerer innholdet, kan du bruke koden nedenfor til å kontrollere visningen i en include-fil: <{if $inc}> <{include file=$inc}> <{/if}> |
||||||||||||||||||||
$shipping |
Den valgte forsendelsesmetoden | ||||||||||||||||||||
$pager_array |
Pager hvis den gjeldende siden inneholder siderulling. Innholdet i matrisen er elementenemax , current , total , url og first_url . |
||||||||||||||||||||
$pager |
Personsøkerobjekt. | ||||||||||||||||||||
$current_url |
Den absolutte URL-en til den aktuelle siden. | ||||||||||||||||||||
$top_url |
Relativ URL til den aktuelle siden. | ||||||||||||||||||||
$get |
En matrise med alle GET-variabler. | ||||||||||||||||||||
$post |
En matrise med alle POST-variabler. | ||||||||||||||||||||
$cookie |
En matrise med alle COOKIE-variabler. | ||||||||||||||||||||
$user_id |
ID-en til butikkeieren som er logget inn i admin. Denne variabelen settes hvis du følger en kobling til butikken fra admin. | ||||||||||||||||||||
$customer |
Kundeobjekt hvis kunden er logget inn i butikken. | ||||||||||||||||||||
$remote_addr |
IP-adressen til kunden som ser på siden. | ||||||||||||||||||||
$admin_url |
URL til Shoporama-administrator | ||||||||||||||||||||
$selected_payment_gateway |
ID-en til den valgte betalingsgatewayen. | ||||||||||||||||||||
$join_mailinglist |
En indikator for om kunden har krysset av for at de ønsker å abonnere på nyhetsbrevet. | ||||||||||||||||||||
$basket_url |
URL til kurven og innholdet i den. | ||||||||||||||||||||
$products_matches |
ID-er for produkter som har matchet en rabatt eller kampanje | ||||||||||||||||||||
$campaign_ids |
ID-er på kampanjer hvis produktene i kurven samsvarer med en kampanje. | ||||||||||||||||||||
$campaigns |
Hvis det er en aktiv kampanje. | ||||||||||||||||||||
$campaign_discount |
Rabatten fra de aktive kampanjene. | ||||||||||||||||||||
$campaign_matches |
En matrise med produkter som matcher en kampanje. Hvis det ikke finnes noen produkter, er variabelen null. | ||||||||||||||||||||
$unpaid_order |
Hvis kunden har en ubetalt ordre. | ||||||||||||||||||||
$unpaid_recurring_order |
Ubetalt abonnement. | ||||||||||||||||||||
$basket |
Innholdet i kurven som en matrise, der de enkelte elementene er produktene i kurven, med verdiene:
Eksempel på hvordan ovenstående brukes: <{foreach $basket as $row}> <{if $image = $row.product->getImage()}> <img src="<{$image->getSrc(50, 50, 'box')|escape}>"> <{/if}> <{$row.amount}> x <{$row.product->getName()|escape}> i alt <{$row.product->getRealPrice($row.amount, $row.attributes)|number_format:2:",":"."}> <{$webshop->getCurrency()}> <{/foreach}> Sjekk mal-API-et for å se hvilke metoder som er tilgjengelige for de ulike objektene. |
||||||||||||||||||||
$subscriptions |
Kurvabonnementer. Fungerer på samme måte som $basket |
||||||||||||||||||||
$price |
Delsummen av innholdet i handlekurven. Det vil si uten frakt. | ||||||||||||||||||||
$shipping_price |
Fraktprisen for kurven. | ||||||||||||||||||||
$total_price |
Totalpris for innholdet i kurven. | ||||||||||||||||||||
$vat |
MVA på innholdet i kurven. | ||||||||||||||||||||
$basket_weight |
Kurvens totalvekt (for f.eks. frakt). | ||||||||||||||||||||
$total_amount |
Totalt antall produkter i kurven. | ||||||||||||||||||||
$voucher |
Rabattkoden, hvis det finnes en. | ||||||||||||||||||||
$voucher_discount |
Rabatten fra rabattkoden. | ||||||||||||||||||||
$shipping_country |
Det valgte leveringslandet. | ||||||||||||||||||||
$nofollow |
Angir om nofollow er angitt på siden. | ||||||||||||||||||||
$meta_title |
Tittelen på siden. | ||||||||||||||||||||
$meta_description |
Beskrivelse av siden. | ||||||||||||||||||||
$canonical |
URL til sidens kanoniske URL. | ||||||||||||||||||||
$session_order |
Array med faktureringsadressen. Inneholder feltenenavn , firmanavn , momsnummer , adresse , adresse2 , postnummer ,by , e-post , telefon , e_nummer , kommentarer |
||||||||||||||||||||
$session_del |
Array med leveringsadressen. Inneholder feltene:navn , firmanavn , adresse ,adresse2 , postnummer , by |
||||||||||||||||||||
$session_extra |
Array med ekstra felt på bestillingen. Hvis et felt POSTes medextra[test]=123 , vil $session_extra.test være123 og lagres på bestillingen . |
||||||||||||||||||||
$use_points |
Antall poeng kunden har oppgitt at de ønsker å bruke på bestillingen. | ||||||||||||||||||||
$point_discount |
Hvor mange DKK (eller annen valuta) de brukte poengene (fra $use_points ) tilsvarer. |
||||||||||||||||||||
$earns |
Hvor mange poeng kunden tjener ved å fullføre bestillingen. |
Nedenfor finner du Shoporama-spesifikke funksjoner som kan brukes i maler:
Funksjonalitet | Beskrivelse | ||||||||
---|---|---|---|---|---|---|---|---|---|
t |
Det er mulig å bygge inn språkstøtte i malene dine. Ikke klassisk språkstøtte, der du kan velge tekst på flere språk, men språkstøtte der det er mulig å endre teksten i admin. Det fungerer ved at teksten pakkes inn i en <{t}>Din kurv<{/t}> Merk at hvis du endrer teksten i malfilene dine, vil den nye teksten vises som en ny tekst i admin. Det finnes ingen ID-er eller navn bortsett fra innholdet, noe som gjør teksten unik. Du kan angi <{t section="basket" hint="Bruger i overskriften"}>Din kurv<{/t}> Hvis du har variabelt innhold som du vil sende med uten at verdien ligger i admin, kan du bruke syntaksen nedenfor: <{t amount=$total_amount price=$total_price|number_format:2:",":"." hint="Til kurven"}> Du har {amount} ting til {price} kroner i kurven. <{/t}> Hvis det passer bedre inn i strukturen din, kan du også bruke <{$title = "Min titel her"}> <{$title|t}> Ovennevnte vil vise følgende i admin:
|
||||||||
cache |
Hvis en mal inneholder mange tunge anrop som ikke trenger å oppdateres i sanntid - for eksempel varianter på produkter, menyer eller kategorioversikter - inneholder Shoporama en hurtigbufringsfunksjon som kan gjøre butikken mye raskere. Funksjonene som brukes er henholdsvis <{get_cache name="my_cache" ttl=3600 assign="c"}> <{if $c}> Fra cache: <{$c}> <{else}> Live: <{cache name="my_cache"}> <{$smarty.now}> <{/cache}> <{/if}>
|
||||||||
get_cache |
Funksjon som returnerer bufret innhold fra
|
Det er mulig å legge til noen generelle innstillinger i temaene ved å legge til entheme_settings.json
i roten av temaet og provosere noe som følger:
Strukturen er som følger:
Navn | Innhold | Datatype | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
info |
Navnet på temaet | string |
|||||||||||||||||||||||||||||||||||||||
features |
En rekke funksjoner som temaet inneholder. Brukes bare for visning i admin. Bare nyttig hvis temaet er generelt og flere brukere kan velge det. For eksempel ["Funksjon A", "Funksjon B", "Funksjon C"]. |
array |
|||||||||||||||||||||||||||||||||||||||
demo |
URL til en mulig demoside | string |
|||||||||||||||||||||||||||||||||||||||
settings |
Array av felt som kan redigeres: |
array |
|||||||||||||||||||||||||||||||||||||||
Eksempel på filinnhold{ "info": "Mit tema", "settings": [ { "path": "design", "name": "Design", "description": "Indstillinger for dit design", "fields": [ { "path": "logo", "name": "Toplogo", "description": "Upload dit logo her", "type": "image" }, { "path": "background_color", "name": "Baggrundsfarve", "description": "Baggrundsfarven på shoppen", "type": "color" }, { "path": "size", "name": "Bredde", "description": "Bredden på siden", "type": "list", "values": [ { "name": "Afgrænset", "value": "boxed" }, { "name": "Fuld bredde", "value": "fullwidth" } ] } ] }, { "path": "contact", "name": "Kontaktoplysninger", "description": "Dine kontaktoplysninger der vises i temaet", "fields": [ { "path": "mail", "name": "E-mail-adresse", "description": "Indtast din e-mail-adresse her", "type": "string" } ] }, ] } |
Page Builder er et verktøy for å bygge innhold via seksjoner fra JSON-filer. Disse seksjonene kan plasseres på forskjellige sider i nettbutikken. Hvilke sider de kan plasseres på,
defineres i filen/{name}/components/sections.json.
Innholdet i hver seksjon defineres i en egen fil ,
som plasseres i /{name}/components/sections/{section}.json.
Hvis du har gjort det ovennevnte, vil Design-lenken øverst i administrasjonen automatisk føre tilSidebygger:
Strukturen i bygningsdelene er som følger:
Wire | Innhold | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/{navn}/components/sections.json |
Inneholder en liste over sidetyper og en matrise over hvilke seksjoner som er tillatt. I tillegg til sidetyper kan du også bruke egendefinerte tagger. { "Sidetype": ["sektionA", "sektionB"] } Følgende sidetyper er tilgjengelige:
Et eksempel på en { "landing_page": ["slider", "photos", "quiz"], "product": ["slider"], "#footer": ["about"] } |
|||||||||||||||||||||||||||||||||||||||||||||||||||
/{navn}/components/tags.json |
Tagger brukes til plasseringer som du finner opp selv, og som du kan dra ut som du vil. Du kan for eksempel ha behov for en #footer som du drar ut og viser nederst i butikken, eller et #xmas-oppsett som du bare bruker i desember . Formatet for tags.json er
{ "tag1": "Beskrivelse ...", "tag2": "Beskrivelse ...", "tag3": "Beskrivelse ..." } De enkelte taggene vises automatisk i admin når brukeren oppretter et nytt oppsett: For å hente ut innholdet i taggene i temaet brukes funksjonengetBlocks() på følgende måte: <{if $blocks = $webshop->getBlocks("#foo")}> <{foreach $blocks as $block=>$elements}> [...] <{/foreach}> <{/if}> |
|||||||||||||||||||||||||||||||||||||||||||||||||||
/{navn}/components/sections |
I denne katalogen er hver seksjon plassert i sin egen json-fil. Hver fil er oppkalt etter navnet på seksjonen. Hvis seksjonen heter slider , skal innholdet ligge i/{name}/components/sections/slider.json. Strukturen i filene er som følger
|
Det finnes ulike strategier for å hente ut data. I utgangspunktet vil det være en$page_blocks
på sidene som samsvarer med et oppsett. Denne kan sløyfes gjennom, eller innholdet kan hentes ut via $webshop->getBlocks('#foo')
. Eller innholdet kan nås via seksjonsnavnet.
Som et utgangspunkt anbefaler vi å plassere visningen av de enkelte seksjonene i separate filer, for eksempel /{navn}/templates/sections/{section}.html.
Da er det enkelt å loope gjennom $page_blocks
og inkludere den riktige visningen på følgende måte:
<{if $page_blocks}> <{foreach $page_blocks as $section}> <{$type = $section._type}> <{if $webshop->templateExists("sections/$type.html")}> <{include file="sections/$type.html"}> <{/if}> <{/foreach}> <{/if}>
Merk at typen av raden finnes i variabelen _type.
Vi kaller seksjonen nedenfor for images
- innholdet ligger derfor i/{name}/components/sections/images.json.
{ "title": "Overskrift og billeder", "fields": [ { "id": "headline", "type": "text", "title": "Overskrift" }, { "id": "images", "type": "images", "title": "Billeder" } ] }
Dette gir følgende grensesnitt i admin:
For å hente ut innholdet ved hjelp av metoden ovenfor kan/{navn}/templates/sections/images.html
inneholde følgende:
<h1><{$section.headline|escape}></h1> <{foreach $section.images as $image}> <img src="<{$image->getSrc(150, 150, 'box')}>"> <{/foreach}>
Når det gjelder datatype, er det viktig å være klar over hva de enkelte feltene inneholder. De kan enten værestrenger
, matriser
eller objekter
. Med andre ord bør du gjøre noe lignende:
[...] <{foreach $section as $name=>$val}> <{if is_array($val)}> Repeater eller serie av bilder <{elseif is_object($val)}> Ett bilde <{else}> Tekst, tall eller lignende <{/if}> <{/foreach}> [...]
Hvis du bruker typene product
, category
eller landing_page
, returneres den valgte ID-en i temaet ,
og du må selv hente ut objektet med metodene $webshop->getProductById(id)
,$webshop->getCategory(
id
)
eller $webshop->getLandingPage(id)
. Eksempel:
[...] <{if $product = $webshop->getProductById($section.product_id)}> <{$product->getName()|escape}> <{/if}> [...]
Merk at det alltid er mulig å bruke var_dump
til å undersøke hva variabelen inneholder og loope gjennom den på riktig måte.
Basert på den tidligere nevnte strukturen, er de enkelte visningene omtalt nedenfor. For å forstå de enkelte objektene og hvilke metoder som er tilgjengelige, anbefaler vi at du tar en titt på vår Mal-API.
Last ned Alaska-temaet vårt for å se eksempler på de ulike visningene.
Produktvisningen kan ligge i product .html
, men dette er valgfritt .
Det er alltid index.html
som håndterer de enkelte visningene. Vi anbefaler imidlertid å bruke denne strukturen. For å vite at en produktvisning kjører, sjekk om $product
er til stede .
Produkter legges til i handlekurven ved å foreta et POST-kall
til en hvilken som helst side - vanligvis bare den siden du allerede viser, med argumentene product_id
, attributes[{attribute_id}]={attribute_value_id}
ogamount.
Attributtet skal bare legges til hvis produktene har varianter.
Et enkelt eksempel på hvordan du legger til produkter i handlekurven, kan være
<form action="" method="post"> <input type="hidden" name="product_id" value="<{$product->getProductId()}>"/> <input type="number" name="amount" value="1" min="1"/> <input type="submit" value="Læg i kurv"> </form>
Med varianter:
<form action="" method="post"> <input type="hidden" name="product_id" value="<{$product->getProductId()}>"/> <{foreach $product->getProfile()->getAttributeList() as $attribute}> <{if $attribute->getIsVariant() && $attribute->getDataType() == "valuelist"}> <select name="attributes[<{$attribute->getAttributeId()}>]"> <{foreach $attribute->getValues() as $value}> <option value="<{$value->getAttributeValueId()}>"> <{$attribute->getName()|escape}>: <{$value->getVal()|escape}> </option> <{/foreach}> </select> <{/if}> <{/foreach}> <input type="number" name="amount" value="1" min="1"/> <input type="submit" value="Læg i kurv"> </form>
Ovennevnte kan selvfølgelig gjøres mer komplisert hvis du ønsker å vise lagerstatus, pakker osv.
Landingssider inneholder en $landingpage
og $products
, som er en matrise med produkter som skal vises på siden.
Hvis siden krever en personsøker, setter du den inn på følgende måte:
<{if $pager}> <{$pager->render()}> <{/if}>
Kategorier inneholder en $category
og $products
, som er en matrise med produkter som skal vises på siden.
Hvis siden krever en personsøker, setter du den inn på følgende måte:
<{if $pager}> <{$pager->render()}> <{/if}>
Statiske sider vil inneholde en $page.
Bloggen kan deles inn i to sider: blog.html
og blog_post.html
, der den første kan hente en liste over blogginnlegg via
<{$blog_posts = $webshop->getBlogPosts()}>
Selve visningen av de enkelte blogginnleggene gjøres ved å se på variabelen $blog_post.
Hvis listen over blogginnlegg kommer fra en kategori, finnes det også en $category
med den kategorien.
I product_review.html
har du tilgang til $order
, som er bestillingen din .
Du kan bare se gjennom produkter du har kjøpt. Fra bestillingen kan du hente produktene via $order->getOrderProducts().
For å lagre produktomtalene må du foreta et POST-kall
til den samme siden med følgende innhold:
<{if $order}> <{if $get.voted}> Tak! <{else}> <form action="" method="post"> <{foreach $order->getOrderProducts() as $product}> <{$product->getName()|escape}> Stjerner: <input type="number" min="1" max="5" name="rating[<{$product->getProductId()}>]"> Anmeldelse <textarea name="description[<{$product->getProductId()}>]"></textarea> <{/foreach}> <input type="submit" value="Skriv anmeldelse"/> </form> <{/if}> <{/if}>
$get.voted
er sant når kunden har vurdert.
For å lenke til vurderingssiden fra bestillingen din ,
bruker du $order->getReviewUrl().
Søket fungerer ved å gjøre et GET-kall
til /search
,
der argumentet?search=
må være søkeordet ditt.
Et eksempel:
<form action="/search"> <input type="text" name="search" value="<{$get.search|escape}>"/> <input type="submit" value="Søg"/> </form>
Det søkes etter produkter, kategorier, blogginnlegg og destinasjonssider. For å vise resultatet må du se på de fire variablene$produkter
, $kategorier
, $blogginnlegg
, $sider
og $landingssider
.
Om statiske sider skal søkes på, må aktiveres i admin.
Hvis kundene dine kan logge inn i butikken din, kan du la dem opprette ønskelister. De kan opprette så mange ønskelister de vil, og en ønskeliste har et navn, en beskrivelse og et utvalg av produkter. Selve ønskelisten har en offentlig adresse, slik at kundene dine kan sende en lenke.
Ønskelisten bruker følgende maler:
Mal | URL | Beskrivelse | Relevante variabler |
---|---|---|---|
wishlist.html |
/wishlist |
Den offentlige ønskeliste-siden. | $wishlist som inneholder ønskelisten. Se metoder her. |
user-wishlists.html |
/user-wishlists |
Brukerens ønskeliste-side. Krever innlogging. | $customer->getWishlists() for å hente ut ønskelister. |
user-wishlist.html |
/user-wishlist |
Siden som brukes til å redigere ønskelisten og produktene | $wishlist som inneholder ønskelisten. Se metoder her. |
For å opprette en ønskeliste må det sendes en POST fra user-wishlists.html
med navnefeltet
og en valgfri beskrivelse
.
For eksempel
<form action="" method="post"> Navn <input type="text" name="name"> Beskrivelse <textarea name="description"></textarea> <input type="submit" value="Opret"> </form>
Merk at du kan bruke metodene $wishlist->getRemoteUrl()
og $wishlist->getEditUrl()
til å opprette lenker for å vise og redigere ønskelistene.
I filen user-wishlist.html
der ønskelisten redigeres, må navn og beskrivelse sendes somnavn
, beskrivelse
og status
, som enten kan være aktiv
eller lukket
. Selve produktene, antallet og eventuelle kommentarer må sendes som en matrise i følgende format:
wishlist_product[{id}][name] = 'navn' wishlist_product[{id}][comments] = 'kommentar' wishlist_product[{id}][remove] = '1' // kun hvis produktet skal fjernes
Eksempel på kode:
<{foreach $wishlist->getWishlistProducts() as $wp}> <{* Fordi der er forskel på produkter og ønskelisteprodukter }*> <{$product = $wp->getProduct()}> <input type="checkbox" name="wishlist_product[<{$wp->getWishlistProductId()}>][remove]" value="1"> <a href="<{$product->getUrl()|escape}>"><{$product->getName()|escape}></a> <{if $variant = $wp->getVariantValue()}> <{$wp->getVariantName()|escape}>: <{$variant|escape}> <{/if}> <input type="number" name="wishlist_product[<{$wp->getWishlistProductId()}>][amount]" value="<{$wp->getAmount()}>"> <textarea name="wishlist_product[<{$wp->getWishlistProductId()}>][comments]"><{$wp->getComments()|escape}></textarea> <{/foreach}>
Hvis en variabelredigering
sendes, vil siden gå tilbake til den samme redigeringssiden igjen. I motsatt fall vil du bli omdirigert til oversikten over ønskelisten. For å slette ønskelisten må en variabel med navnetremove
sendes. For eksempel
<input type="submit" name="remove" value="Slet" onclick="return confirm('Er du sikker?');">
For å legge til produkter på en ønskeliste fra butikken, kan det gjøres et POST-kall fra en hvilken som helst side med feltenewishlist_id
, product_id
og en valgfri attributt_value_id
hvis produktet har en variant. Eksempel:
<{if $product && $customer}> <{if $wishlists = $customer->getWishlists()}> <form action="" method="post"> <input type="hidden" name="product_id" value="<{$product->getProductId()}>"/> <label>Vælg ønskeliste:</label> <select name="wishlist_id"> <{foreach $wishlists as $wishlist}> <option value="<{$wishlist->getWishlistId()}>"> <{$wishlist->getName()|escape}> </option> <{/foreach}> </select> <{if $variant = $product->getVariant()}> <label>Vælg variant:</label> <select name="attribute_value_id"> <{foreach $variant->getValues() as $value}> <option value="<{$value->getAttributeValueId()}>"> <{$variant->getName()|escape}>: <{$value->getVal()|escape}> </option> <{/foreach}> </select> <{/if}> <input type="submit" value="Tilføj til ønskeliste"> </form> <{/if}> <{/if}>
Retursenteret gjør det mulig for kundene dine å opprette returer selv. Det må aktiveres ibutikkinnstillingene. Når en kunde har opprettet en retur, må den godkjennes i administrasjonen, og det opprettes en kreditnota.
Retursenteret bruker følgende maler:
Mal | URL | Beskrivelse | Relevante variabler |
---|---|---|---|
return.html |
/return |
Siden der returen opprettes | $order inneholder bestillingen kunden ønsker å returnere. Se metoder her. |
order-return.html |
/order-return |
Siden der returen deretter vises | $order_return med avkastningen. Se metoder her. |
return_received.html |
E-post som sendes til kunden når de oppretter en retur | $order_return med avkastningen. Se metoder her. |
Det er to måter kunden kan gå inn på retursiden på. Den ene er ved å oppgi bestillingsnummeret og e-postadressen på bestillingen. Den andre er ved å følge en direkte lenke. Den direkte koblingen hentes fra bestillingen ved hjelp av$order->getReturnUrl().
For eksempel
<{if $webshop->useReturnCenter() && !$order->getIsCreditNote()}> <a href="<{$order->getReturnUrl()|escape}>">Retuner varer</a> <{/if}>
Som det fremgår av eksempelet, er det lurt å sjekke at bestillingen ikke er en kreditnota, og at forhandleren har aktivert retursenteret. Eksemplet kan brukes overalt der det finnes en $ordre.
For eksempel i kundens egen ordreoversikt eller i e-poster.
Hvis du ikke bruker innlogging eller på annen måte ønsker at kunden skal kunne søke etter bestillingen sin, må du implementere et søk med ordrenummer og e-postadresse i return.html.
Det er feltene webshop_order_id
og e-post
som skal POSTES til /return.
Hvis bestillingen blir funnet, vil kunden bli sendt til retur, hvis ikke vil$get.not_found
bli satt, og du kan vise en feilmelding i temaet.
Et minimalt skjema kan se slik ut:
<{if $get.not_found}> <p>Der blev ikke fundet nogen ordre.</p> <{/if}> <h1>Returcenter</h1> <form method="post" action=""> <input type="number" name="webshop_order_id" placeholder="Ordrenummer"> <input type="email" name="email" placeholder="E-mail-adresse"> <input type="submit" value="Søg"> </form>
I filen return.html
må det hentes ut en liste over ordrelinjer, og kunden kan velge hvilke produkter som skal returneres og hvorfor. I motsetning til vanlige ordrevisninger må returen inneholde én linje per ordrelinje.
<form action="" method="post"> <{$line = 0}> <!-- Looper ordrelinjerne igennem --> <{foreach $order->getOrderProducts() as $product}> <!-- getReturned() returnerer antallet der tidligere er returneret --> <{$returned = $product->getReturned()}> <!-- Løkke for hver antal --> <{section name="i" loop=$product->getAmount()}> <{$line = $line+1}> <!-- Viser ikke flere end det er muligt at returnere --> <{if $line - $returned > 0}> <{$product->getName()|escape}> <{if $attributes = $product->getAttributes()}> <{foreach $attributes as $attribute}> <{$attribute.name}>: <{$attribute.val}> <{/foreach}> <{/if}> <!-- Check hvilken pris der skal vises --> <{if $webshop->getUseCalculatedUnitPrice()}> <{$webshop->getCurrency()}> <{$product->getCalculatedUnitPrice()|number_format:2:",":"."}> <{else}> <{$webshop->getCurrency()}> <{$product->getUnitPrice()|number_format:2:",":"."}> <{/if}> <!-- Checkbox og en grund --> <input type="checkbox" name="return[<{$line}>]" value="<{$product->getOrderProductId()}>">Vælg <input type="text" name="reason[<{$line}>]" placeholder="Evt. årsag til returnering"/> <{/if}> <{/section}> <{/foreach}> </form>
Det er mulig å angi en fast fraktmetode og pris i admin. Hvis dette gjøres, hentes fraktmetoden ut via$webshop->getReturnShipping($country_id)
, og hvis prisen er fast, hentes den ut via$webshop->getReturnShippingPrice($country_id).
Eksempel:
<{if $return_shipping = $webshop->getReturnShipping($order->getDelCountryId())}> Varer skal returneres via <{$return_shipping->getName()|escape}>. <{if $price = $webshop->getReturnShippingPrice($order->getDelCountryId())}> Prisen er <{$price|number_format:2:",":"."}> <{else}> Prisen er <{$return_shipping->getCost()|number_format:2:",":"."}> <{/if}> <{else}> <!-- Vis en liste over shoppens almindelige leveringsmetoder her --> <{/if}>
Den valgte leveringsmetoden, hvis den er valgfri, må sendes som shipping_id
.
Når returen er opprettet, vises den i order-return.html
, som inneholder en $order_return
med de relevante metodene .
also.html
er vår mersalgsside.
I utgangspunktet har du tilgang til $product,
og derfra kan du komme med forslag til kunden. For eksempel kan det være relevant å bruke $product->getRelatedProducts()
,$product->getAlsoBought()
, eller $webshop->getPopularProducts()
.
Brukes kun til å vise 404-sider.
Brukes kun til å vise 410 sider.
En captcha legges automatisk inn når du prøver å melde deg på nyhetsbrevet eller skrive kommentarer. Dette er for å unngå spam. Det er mulig å designe siden selv i captcha.html
, og den må som et minimum inneholde:
<form action="" method="post"> <{$form}> <{if $error}>Fejl i koden<{/if}> <img src="<{$imgstr}>"> Skriv indholdet at ovenstående felt: <input type="text" name="c"> <input type="submit" value="OK"> </form>
Det er mulig å la kundene dine logge inn i butikken. Hvis de er innlogget, vil det finnes en$customer
som inneholder informasjon om brukeren. Alle sider som redigerer, logger inn osv. må sendes inn via POST til selve siden.
Filnavn | Beskrivelse | Relevante variabler/parametere i skjemaet |
---|---|---|
/user-edit.html |
Brukes til å redigere kundedata. Det er mulig å legge til felt på kunden. Se mer under denne tabellen. | company , vat_number , name , email , phone , address , zipcode , city , country_id , shipping_name , shipping_address , shipping_zipcode , shipping_city , shipping_country_id , pass1 , pass2 . |
/user-orders.html |
Kundens tidligere bestillinger | $my_orders |
/user-points.html |
Kundens synspunkt | $my_points |
/user-profile.html |
Visning av kundedata | $customer |
/user-reset-password.html |
Brukes for tilbakestilling av passord | email , password |
/user-sign-in.html |
Innloggingsside. Bruk redir hvis kunden må omdirigeres til en URL etter pålogging. |
email , password , redir |
/user-sign-up.html |
Et skjema som kunden bruker for å registrere seg. | name , email , phone , address , zipcode , city , company , vat_number , og country_id |
Det er mulig å definere egendefinerte felt for brukerne dine i administrator. Disse feltene redigeres på følgende måte:
<{foreach $webshop->getCustomerFields() as $field}> <{if $field->getType() == "list"}> <{$field->getName()|escape}> <select name="field[<{$field->getCustomerFieldId()}>]"> <{foreach $field->getValues() as $value}> <option <{if $field->getVal() == $value}>selected="selected"<{/if}> value="<{$value|escape}>"> <{$value|escape}> </option> <{/foreach}> </select> <{elseif $field->getType() == "string"}> <{$field->getName()|escape}> <input type="text" name="field[<{$field->getCustomerFieldId()}>]" value="<{$field->getVal()|escape}>"> <{/if}> <{/foreach}>
Lojalitetsprogrammet gjør det mulig for kundene dine å tjene og bruke poeng når de fullfører bestillinger. Oppsettet administreres under Kunder > Lojalitetsprogram.
Du kan bruke metodene nedenfor for å sjekke om butikken har aktivert lojalitetsprogrammet, og om kunden er logget inn og har opptjent poeng som de kan bruke:
<{if $webshop->hasLoyaltyProgram() && $customer && $customer->getActivePoints()}> [Visning af point m.m.] <{/if}>
Du kan bruke følgende kodeeksempel for å vise hvor mange poeng kunden har opptjent, og hvor mange poeng han eller hun kan bruke på den aktuelle bestillingen:
Du har optjent <{$customer->getActivePoints()|number_format:0:",":"."}> point. <{if $points = $customer->getPointsAvailable()}> Du kan bruge <{$points|number_format:0:",":"."}> point på denne ordre. <{else}> Du har ingen optjente point du kan bruge på denne ordre. <{/if}>
Feltet du legger inn i kurven for å angi hvor mange poeng kunden skal bruke, skal hete use_points
og kan se slik ut:
<input type="number" name="use_points" value="<{$use_points}>" min="0" max="<{$customer->getPointsAvailable()}>"/>
Du kan bruke $earns
for å se hvor mye kunden tjener på bestillingen:
Du optjener <{$earns|number_format:0:",":"."}> point på denne ordre.
Du kan bruke eksemplet nedenfor for å beskrive lojalitetsprogrammet ditt:
Du optjener <{$webshop->getLoyaltyProgramBasePoints()|number_format:0:",":"."}> point hver gang du køber for 1 <{$webshop->getCurrency()}>. Når du betaler med point svarer <{$webshop->getLoyaltyProgramBaseCost()|number_format:0:",":"."}> point til 1 <{$webshop->getCurrency()}>.
Hvis du vil lage en side med poengoversikt ,
kan du bruke user-points.html
, der du kan løpe gjennom $my_points
og presentere innholdet .
Ta en titt på SafePoint-klassen for å se hvilke metoder som er tilgjengelige.
Tips: Du kan style ordreoversikten ved å bruke følgende CSS-klasser: points_used
, points_earned
og has_profile
.
Sjekk ut-flyten er ganske enkelt en serie html-sider, som hver inneholder et skjema som POSTER
noen data til seg selv, og hvis neste-feltet
er angitt, vil Shoporama videresende til neste side i flyten. Vanligvis vil du sette "Neste"-knappen til name="next
". Du kan alltid lenke til tidligere sider i flyten. Når kunden har lagt inn opplysningene sine, lagres disse i to arrayer, $session_order
og $session_del
. For eksempel$session_order.name
.
Filnavn | Beskrivelse | Relevante variabler/parametere i skjemaet |
---|---|---|
basket.html |
Viser innholdet i kurven. Enkelt eksempel på hvordan $basket brukes:<{foreach $basket as $line}> <{$line.amount}> x <{$line.product->getName()}> <{foreach $line.attributes as $a}> <{$a.name|escape}>: <{$a.value|escape}> <{/foreach}> <{/foreach}> For å endre nummeret, [...] <input name="amount[<{$line.id}>]" value="<{$line.amount}>" /> [...] For å legge til en rabattkode må en Leveringslandet kan endres ved å |
$basket , $voucher , $voucher_discount , $campaign_ids ,
$campaign_discount , $price , $shipping_price , $total_price ,
$vat |
address.html |
Siden der leveringsinformasjonen legges inn. Hvis Hvis |
order_country_id , order_name , order_company_name , vat_number ,
ean_number , order_address , order_zipcode , order_city ,
email , phone , comments , del_name , del_company_name ,
del_address , del_zipcode , del_city , del_country_id ,
mailinglist , create_profile |
shipping.html |
Brukes til å velge leveringsmetode. De enkelte leveringsmetodene kan hentes ut via For å lagre fraktmetoden må en [...] <{if $shipping->getModule()}> <select name="shop"> <{foreach $shipping->getDeliveryShops() as $shop}> <option value="<{$shop.number}>"> <{$shop.name|escape}> <{$shop.street|escape}> <{$shop.zip|escape}> <{$shop.city|escape}> </option> <{/foreach}> </select> <{/if}> [...] |
shipping_id , shop |
approve.html |
Autorisasjonssiden. Brukes til å vise bestillingen. Hvis butikken inneholder flere betalingsgatewayer, kan disse velges på denne siden. De hentes via |
$basket , $shipping , payment_gateway_id |
thanks.html |
Takk-siden. Brukes til å vise bestillingen som er fullført. | $order |
Shoporama har to innebygde ajax-kall. Det ene kan trekke ut produkter på forskjellige måter (filtrering), og det andre er et generelt og enkelt søk som søker etter produkter, kategorier og destinasjonssider.
Filtreringen ligger i filen /ajax som
ligger i roten til alle butikkene
Argument | Beskrivelse | Eksempel på et eksempel |
---|---|---|
atags |
En liste over tagger på attributtverdiene, attributtverdiene er innstillinger på attributtene i produktprofilene. verdiene på atags må være atskilt med komma, men tillater grupperinger atskilt med pipe som et logiskELLER. |
ajax?atags=female,black|white |
product_ids |
Liste over product_ids separert med pipe. | ajax?product_ids=1|2|3|4 |
price_range |
Returnerer produkter som faller innenfor et prisintervall. Beløpene må skilles fra hverandre med en pipe. | ajax?price_range=100|200 |
categories |
En pipeseparert liste over kategorier produktene skal være i. Hvis argumentet exclude=1 er angitt, returneres en liste over produkter som ikke har kategoriene . |
ajax?categories=5|9|2 ajax?categories=5|9|2&exclude=1 |
sort |
Sorteringsrekkefølgen. Verdiene popular , weight , name ,price , created kan angis. Om sorteringsrekkefølgen skal være stigende eller synkende, angis ved å sette sort_order til enten asc (stigende) eller desc (synkende) . |
ajax?sort=price&sort_order=desc |
attribute_values |
En liste med ID-er for attributtverdiene som produktene skal ha. Listen er separert med pipe. Hvis argumentetexclude=1 er angitt, returneres en liste over produkter som ikke samsvarer. |
ajax?attribute_values=9|8|12 |
suppliers |
Rørseparert liste med leverandør-ID-er. | ajax?suppliers=8|2 |
landing_pages |
Girl-separert liste over landingsside-ID-er for produkter som skal vises på. | ajax?landing_pages=5|24 |
extension.{id} |
Hvis temaet bruker utvidede felt, kan produkter hentes ut basert på dem. Det gjøres absolutte søk, så de feltene som gir mest mening å bruke, er bool , multi ,number og list. Pipe-separerte verdier kan brukes hvis produktene bare skal matche én av verdiene. |
ajax?extension.foo=1&extension.tags=foo|bar |
attribute_tags_in_stock |
Liste over tagger på attributtverdier som må være på lager. Listen kan være pipe-separert. | ajax?attribute_tags_in_stock=foo|bar |
attribute_tags |
Liste over tagger som må angis på produktene. Listen kan være pipe-separert. | ajax?attribute_tags=foo|bar |
attribute_tag |
Samme som attribute_tags , men bare med én enkelt tag. |
ajax?attribute_tag=foo |
force_categories |
En pipeseparert liste med kategori-ID-er som alle må være angitt på produktene. | ajax?force_categories=5|9|2 |
limit |
Maks. antall produkter som skal returneres. | ajax?limit=10 |
offset |
Startposisjon i forhold til hvor i produktlisten du ønsker å hente fra. | ajax?offset=100&limit=10 |
meta |
Pipe-separert liste over ekstra felt du ønsker å se på produktene i resultatet. Hvis du angirmeta=_all , returneres alle. |
ajax?meta=foo|bar ajax?meta=_all |
only_in_stock_variants |
Settes til 1 eller 0 , avhengig av om hvert produkt i resultatet kun skal inneholde varianter som er på lager. Standardinnstillingen er 0. |
ajax?only_in_stock_variants=1 |
include_meta |
Angis til 1 eller 0 , avhengig av om du vil ha et ekstra metafelt i resultatet som inneholder beskrivelser av produktene i resultatet. Dette er informasjon om hvilke attributter, kategorier og merker som finnes. Standardinnstillingen er 0. |
ajax?include_meta=1 |
include_pagination |
Settes til 1 eller 0 , avhengig av om du vil ha et ekstra pagineringsfelt i resultatet som inneholder informasjon om paginering . Feltene i matrisen er offset , limit , count , total. Standardinnstillingen er 0. |
ajax?include_pagination=1 |
pretty |
Settes til 1 eller 0 , avhengig av om json-svaret skal formateres pent eller ikke. |
ajax?pretty=1 |
Svaret fra /ajax
er en matrise i formatet nedenfor:
[ { "product_id": 139735, "own_id": "skunumme", "name": "Produktnavn", "supplier_id": 0, "supplier_name": "", "category_ids": [ 3661, 2113, 2106, 1973 ], "category_names": [ "Bob", "Forside", "Ged", "Giraf" ], "description": "<p>...</p>", "list_description": "", "profile_name": "Default m. variant", "allow_negative_stock": 1, "brand_name": "TESTBRAND", "sale_price": 0, "real_price": 80, "price": 80, "price_dk": "80,00", "approx_shipping": 0, "delivery_time": "", "delivery_time_not_in_stock": "", "url": "https://example.com/produkt", "stock": 0, "attr_stock": null, "variant_stock": [ { "attribute_id": 2740, "attribute_value_id": 16287, "name": "S", "weight": 10, "cnt": 4 }, { "attribute_id": 2740, "attribute_value_id": 16289, "name": "L", "weight": 30, "cnt": 9 } ], "stock_string_da": "Nej", "avg_rating": null, "thumbnail": "https://example.com/cache/1/9/6/9/bob-fit-200x200x90.png", "meta_values": [ null ], "online_since": 1651685711, "has_campaigns": true, "campaign_info": [ { "name": "Bob", "price_model": "cheapest_free", "min_product_count": 4, "price": 0, "percent": 0, "created": "2023-02-01 14:55:47", "expires": null } ] } ]
Av hensyn til hastigheten mellomlagrer vi svaret fra ajax-filen, men i testmiljøet kan du legge til rebuild=1
som et argument for at siden skal gjenoppbygges .
Vi anbefaler at du ikke gjør dette i produksjonsmiljøet, da det kan gjøre siden betydelig tregere.
Siden /ajax_search
inneholder et generelt søk etter produkter, kategorier og destinasjonssider. Den kan for eksempel brukes til autofullføring i søkefeltet. Den tar følgende argumenter:
Argument | Beskrivelse | Eksempel på et eksempel |
---|---|---|
term |
Nøkkelord. | ajax_search?term=ostemad |
limit |
Maks. antall resultater. | ajax_search?term=ostemad&limit=25 |
include |
En kommaseparert liste over datatyper du vil søke i. Verdiene kan væreprodukter , kategorier , blogginnlegg , sider og landingssider . |
ajax_search?term=ostemad&include=products,categories |
pretty |
Settes til 1 eller 0 , avhengig av om json-svaret skal formateres pent eller ikke. |
ajax_search?term=ostemad&pretty=1 |
Resultatet er en matrise i formatet nedenfor:
[ { "name": "Produkt et", "supplier": "", "description": "<p>...</p>", "price": 80, "sale_price": null, "normal_price": 80, "currency": "DKK", "price_dk": "80,00", "url": "https://example.com/produkt-et", "stock": 0, "stock_string_da": "Nej", "review_avg": 0, "thumbnail": "https://example.com/cache/1/9/8/4/box-100x100x90.png", "type": "product" }, { "name": "Produkt to", "supplier": "", "description": "<p>...</p>", "price": 80, "sale_price": null, "normal_price": 80, "currency": "DKK", "price_dk": "80,00", "url": "https://example.com/produkt-to", "stock": 0, "stock_string_da": "Nej", "review_avg": 0, "thumbnail": "https://example.com/cache/1/9/6/9/bob-box-100x100x90.png", "type": "product" } ]