Sisältölistakyselyssä voit määrittää ominaisuuksille arvoja, jotka lasketaan sivuston suorituksen yhteydessä. Näin voit näyttää sisältöä, joka on päivitetty äskettäin.
Useimmat sivustojen komponenttien ominaisuudet ovat staattisia. Käyttäjä valitsee tai syöttää kiinteän merkkijonon tai arvon yhdelle komponentin ominaisuudelle. Tämä arvo pysyy samana riippumatta siitä, milloin ja missä sivu suoritetaan. Voit kuitenkin määrittää ominaisuuksille arvoja, jotka lasketaan sivuston suorituksen yhteydessä. Tämä on hyödyllistä, jos tarkoituksena on näyttää sisältökyselyissä sisältöä, joka on päivitetty äskettäin. Näin käyttäjät voivat syöttää päivämääriä esimerkiksi muodossa "kolmen viime päivän aikana".
Voit lisätä Mustache JS -laajennuksen useisiin ominaisuuksiin. Näissä merkkijonoissa viitatut arvot johdetaan mallista, joka suoritetaan sivun suorituksen yhteydessä. Valmis malli käsittelee päivämäärät, jotka on muotoiltu sisällön REST API -kutsuja varten. Voit huomioida kaikki käyttäjien vaatimukset laajentamalla tätä mallia ylimääräisillä arvoilla.
Esimerkki merkkijonosta, jonka voit syöttää ominaisuudelle:
Content List component: Additional Query String property: updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"
Tämä päivämäärän Mustache-merkintä arvioidaan ajon aikana, ja palautettu arvo vaihtelee suoritusajan mukaan (eli arvo laajenee muotoon updatedDate gt "2220181002060000000"
). Tällä tavalla käyttäjä voi muodostaa minkä tahansa monimutkaisen päivämäärän merkkijonon esimääritetyn arvon syöttämisen sijaan.
Tuetut komponenttien ominaisuudet
Seuraavat ominaisuudet tukevat Mustache JS -mallipohjan syntaksia:
Sisältölista
Lisäkyselymerkkijono
Esimerkki: updatedDate gt "{{#content.date}}today - 3 days{{/content.date}}"
Otsikko/kappale/teksti
CKEditor-editorissa syötetty muotoiltu teksti
Esimerkki: "Content REST API format for date: {{#content.date}}now{{/content.date}}"
Huomautus::
Laajennus ei ole erityisen hyödyllistä otsikossa/kappaleessa/tekstissä ilman räätälöityä Mustache-mallipohjan mallia. Laajennuksesta on kuitenkin paljon hyötyä lisäkyselymerkkijonon tarkistuksessa, koska laajennus arvioidaan ja se on välittömästi näkyvissä, kun vaihdat muokkauksen ja näkymän välillä.Tuettu komponenttien syntaksi
Palvelussa on valmis tuki content.date
-objektille. Se hyväksyy kaksi parametria, jotka ovat today
ja now
.
today
-arvo hakee nykyisen selaimen ajan, muuntaa sen kuluvan päivän keskiyöksi ja muuntaa sitten arvon UTC-ajaksi.
{{#content.date}}today{{/content.date}}
laajenee selaimen ajan mukaiseksi kuluvan päivän keskiyön arvoksi, joka muunnetaan UTC-arvoksi ja muotoillaan sisällön REST API -liittymän päivämäärämuotoon. Esimerkki:
2220181008065959999
Tämän jälkeen siihen voidaan tehdä seuraavia lisäyksiä:
today +/- [day | week | month | year]
today
-arvo toimii eri tavalla, kun siihen lisätään arvo tai siitä vähennetään arvo. Jos vähennät siitä arvon, siinä käytetään aamun aikaa. Jos lisäät siihen arvon, siinä käytetään keskiyön aikaa. Esimerkki:
{{#content.date}}today - 1 day{{/content.date}}
laajenee eilisen päivän aluksi.
{{#content.date}}today + 2 days{{/content.date}}
laajenee ylihuomisen keskiyöksi.
now
-arvo hakee nykyisen selaimen ajan ja muuntaa sen UTC-ajaksi ilman muutoksia.
{{#content.date}}now{{/content.date}}
laajenee nykyiseksi selaimen ajaksi, joka muunnetaan UTC-arvoksi ja muotoillaan sisällön REST API -liittymän päivämäärämuotoon.
now
-arvoon voi myös lisätä hour
-arvon. Mahdollisuudet ovat siis seuraavat:
now +/- [hour | day | week | month | year]
{{#content.date}}now + 2 hours{{/content.date}}
- kaksi tuntia nykyhetkestä muunnettuna UTC-ajaksi ja muotoiltuna sisällön REST API -liitttymän päivämäärämuotoon
{{#content.date}}now - 1 day{{/content.date}}
- tämän selaimen ajan mukainen eilinen muunnettuna UTC-ajaksi ja muotoiltuna sisällön REST API -liitttymän päivämäärämuotoon
Tuetun komponenttien syntaksin käyttö
Jos haluat käyttää lisäkyselymerkkijonon makrolaajennusta esimerkiksi kolmen viime viikon kaiken sisällön palautukseen, syötä seuraava koodi:
updatedDate gt "{{#code.date}}today - 3 weeks{{/code.date}}"
Vain päivämäärä palautetaan, joten kyselymerkkijonoa muodostettaessa lisätään lainausmerkit (samalla tavalla kuin staattista arvoa syötettäessä), jotta arvo toimisi sisällön REST API -liittymän kutsussa.
MustacheJS
Katso syntaksi Mustache JS -mallipohjan sivuilta osoitteessa mustache.github.io/mustache.5.html.
Merkkijonojen laajennuksen yhteydessä suoritettavaan Mustache-instanssiin on tehty yksi muutos. Mustache tarjoaa sekä text
-laajennuksen, jossa käytetään {{ }}
-sulkeita ja html
-laajennuksen, jossa käytetään {{{ }}}
-sulkeita. Nämä kaksi eroavat siinä, että text-laajennus suorittaa merkkijonolle HTML-koodauksen. Jos arvo siis laajennetaan muotoon a < b
, tulos on a < b
. Tämä ei ole toivottu menettelytapa silloin, kun tarkoituksena on muodostaa merkkijonoja URL-osoitteita varten. Voit pyytää käyttäjää käyttämään HTML-laajennusta, mutta se tuottaa lisätyötä ja johtaa uusiin ongelmiin. Käyttäjille pitäisi esimerkiksi selittää, miksi {{{ }}}
-sulkeita on käytettävä.
Jotta tämä ongelma voitaisiin välttää, Mustache on määritetty olemaan käyttämättä koodinvaihtoa arvoissa, kun {{ }}
on käytössä. {{ }}
ja {{{ }}}
toimivat siis samalla tavalla. Tämä tarkoittaa myös sitä, että jos tulos on koodattava, käyttäjän on tehtävä se itse.
Valmis Mustache-malli
Mustache vaatii, että laajennusmallipohjassa sovelletaan mallia. Edellä olevassa esimerkissä {{#content.date}}
on valmiiksi määritetty. Kehittäjä voi lisätä uusia ominaisuuksia, kuten {{person}}
-ominaisuuden. Jos käyttäjä syöttää Mustache-mallipohjaan arvon, jota ei ole mallissa, tuloksena on tyhjä merkkijono. Jos mallipohja on esimerkiksi Hello {{person}}
, arvoksi laajennetaan pelkkä Hello
, ellei kehittäjä ole lisännyt person
-ominaisuutta malliin.
Käytetty malliobjekti on yleisobjekti nimeltä SCSMacros
. Kehittäjä voi vapaasti lisätä ylimääräisiä merkintöjä tähän objektiin. Objekti välitetään Mustacheen, kun mallipohja arvioidaan.
Valmis malliobjekti tukee tällä hetkellä vain content.date
-objektia:
{ content: { date: <lambda implementation> } }
Räätälöity Mustache-malli
Kehittäjä voi laajentaa tuettuja objekteja vaatimustensa mukaisesti. Kehittäjä voi esimerkiksi lisätä lastTwoDays
-objektin ja yksinkertaistaa laajennuksen muotoon {{lastTwoDays}}
.
Jos haluat laajentaa mallin tukemaan esimerkiksi edellisen esimerkin Hello {{person}}
-mallipohjaa, lisää person
-objekti SCSMacros-objektiin. Tämä on tehtävä ennen sivun suoritusta. Sen voi tehdä sivun asettelussa lisäämällä sen alkuun script-tunnisteen. Esimerkki:
<script type="text/javascript"> window.SCSMacros = window.SCSMacros || {}; // define/get the SCSMacros object window.SCSMacros.person = "World"; </script>
Kun muutos on tehty, Hello {{person}}
-mallipohja laajennetaan muotoon Hello World
.
Jos haluat välittää arvoja objektiin (esimerkki: Hello {{#person}}personId{{/person}}
), toteuta mustache lambda
-lauseke ja kääri sekä laajenna arvo toteutuksen sisällä.
Esimerkki:
<script type="text/javascript"> window.SCSMacros = window.SCSMacros || {}; // define/get the SCSMacros object //implement "person" as a lambda window.SCSMacros.person = function () { var people = { '111': { firstName: 'Small', lastName: 'World'}, '222': { firstName: 'Big', lastName: 'Universe'} }; return function (text, render) { var expandedText = render(text); var chosenPerson = people[expandedText] || people['111']; return chosenPerson.firstName; } }; </script>
Kun tämä muutos on tehty, Hello {{#person}}111{{/person}}
-mallipohja laajennetaan muotoon Hello Small
ja Hello {{#person}}222{{/person}}
mallipohja muotoon Hello Big
.
Huomautus::
Mustache-laajennus suoritetaan synkronisesti. Jos haluat hakea asynkronisia arvoja, ne on ratkaistava mallissa, ennen kuin mustache-laajennusta yritetään suorittaa. Tätä ei tällä hetkellä tueta, vaikka räätälöidyt toteutukset ovatkin mahdollisia.