Anvend Canvas redigering i Umbraco selvom du bruger XSLT

Kim Andersen | 17. januar 2010 | 19:59

Som nogle måske har fanget, så er jeg stor fan af CMS’et Umbraco. Udvikler i det dagligt på mit arbejde, og derved kommer jeg rundt i alle hjørner i produktet.

Når man udvikler i Umbraco, kan man hente sit indhold ud på forskellige måder. De to mest brugte metoder er vha. de såkaldte Umbraco-sidefelter eller vha. XSLT. Jeg benytter mig primært af XSLT-metoden, da jeg så har større fleksibilitet i mit arbejde, og kan manipulere med mit output i større grad end hvis jeg benyttede Umbraco-sidefelter.

Problemet
Men der er en ulempe når man hiver sine data ud igennem XSLT. Det er nemlig som udgangspunkt ikke muligt at benytte sig af canvas redigering (også kendt som live editing i andre systemer) når man bruger XSLT til at rendere indhold. Canvas redigering er en metode for webmasterne af systemet til at redigere indholdet på sitet set fra frontend. Det vil sige at man direkte ude på hjemmesiden kan redigere elementer, uden at skulle ind i backend-delen. Meget praktisk til de mere uerfarne brugere.

Men problemet er som sagt at canvas redigering ikke virker ved et standardudtræk igennem XSLT. Normal hiver man en værdi ud af systemet på følgende måde:
<xsl:value-of select="$currentPage/data [@alias = 'tekstIndhold']" />

I eksemplet ovenfor er det indhold i et umbraco felt som vi har givet alias’et tekstIndhold. Det kunne eksempelvis være indholdet fra en richtext editor.

Løsningen
For at få canvas redigering til at virke, og stadig beholde den dejlige frihed som ligger i XSLT kan man benytte sig af en udokumenteret feature i Umbraco. Man skal ind og bruge en funktion i umbraco’s XSLT library som hedder Item. Denne udvidelse er ikke beskrevet nogle steder, men bruger vi eksemplet fra før, kan vi omskrive det til følgende:
<xsl:value-of select="umbraco.library:Item($currentPage/@id, 'tekstIndhold')" />

Frontend-mæssigt kommer brugerne til at se præcis det same indhold som var synligt før, men nu har webmasterne altså også mulighed for at redigere i canvas, hvilket er en stor fordel i visse sammenhænge.

Man angiver sådan set de samme oplysninger når man henter værdierne ud, men bare i en lidt omvendt rækkefølge. Først angiver man hvilket node-id der skal hentes indhold fra, og derefter hvilket alias der skal benyttes.

Så alt i alt er der ikke meget hokus pokus der. Håber det kunne bruges.

Relaterede indlæg:

  1. Umbraco Certified Professional – Hvad er det for noget?
  2. Gratis foredrag om Umbraco v. Niels Hartvig – I Århus
  3. Vis gravatars i Wordpress 2.8 selvom dit tema ikke er lavet til 2.8
  4. Omskriv/Rewrite URL’er i Sitecore til noget mere SEO-venligt
  5. 7 gode råd til hvordan du bliver en god bruger på aNyhed

Kunne du lide indlæget?

Så tilmeld dig mit RSS-Feed eller følg mig på Twitter.

Du kan også få en gratis e-mail når jeg skriver et nyt indlæg.

Indtast din e-mailadresse:

5 Svar

Hej Kim, interessant artikkel selvom jeg ikke selv har prøvet

Michael Østergaard | 17. januar 2010 | 21:29

Hej Kim, interessant artikkel selvom jeg ikke selv har prøvet at sidde med Umbraco – systemet har dog været oppe at vende adskillige gange på min arbejdsplads – og ulempen for os har altid været ASP .net.

Anyhow, har egentlig et helt andet spørgsmål. Har du nogle gode hjælpekilder på XSLT? Har kun rodet med det en lille smule i forbindelsen med Dynamicweb, der også understøtter muligheden. Og har på fornemmelsen, at jeg skal bruge XSLT mere i år.

XSLT er et utrolig stærkt sprog, når man arbejder med

Kim Andersen | 17. januar 2010 | 22:16

XSLT er et utrolig stærkt sprog, når man arbejder med CMSer der understøtter muligheden som eksempelvis, Umbraco, Dynamic Web, Sitecore osv.

Jeg har lært meget af det XSLT jeg kan i dag, ved at bruge det, og have brug for det. Men en udemærket måde at starte på, kan være at læse lidt inde på w3schools: http://www.w3schools.com/xsl/ og http://www.w3schools.com/xpath/

syntaksen er også forskellig fra CMS til CMS, men til Umbraco findes der eksempelvis en fin wiki her: http://our.umbraco.org/wiki/reference/xslt hvor der står nogle ting og sager som man godt kan bruge.

Jeg fik i sin tid også en god bog om emnet: Beginning XSLT 2.0: From Novice to Professional. den kan godt anbefales.

Og mht. problemet omkring .Net, så kan man faktisk komme ganske langt med Umbraco uden at kende til sproget. Men det er klart at det er en fordel at have nogle .Net-ressourcer til rådighed hvis man vil ud og lave nogle udvidelser osv.

Tak for linkene, så har jeg noget at at komme

Michael Østergaard | 18. januar 2010 | 06:42

Tak for linkene, så har jeg noget at at komme igang med :D

Kommer måske til at skulle sætte en Ecommerce fra Dynamicweb op – senere iår, og i den forbindelse er XSLT blevet nævnt. Eftersom jeg stort set er den eneste ude på arbejdet, som ellers har siddet med Dynamicweb, så kunne jeg forestille mig, at tjansen falder til min side.

Personligt, så tror jeg, man får bedst erfaring ved at sidde med noget konkret, hvor man simpelthen leger med tingene :)

Hej Kim Tak for oplysningen - den mulighed kendte vi ikke

Anders Lund | 13. februar 2010 | 13:12

Hej Kim

Tak for oplysningen – den mulighed kendte vi ikke her hos LAIT! :-)

Og ja, XSLT er altså noget værre noget at rode med i starten. I sammenhæng med simple udtræk til websider, kommer man dog hurtigt meget langt med copy-pastede standard-XSLT’er.

Godt at høre at det kan bruges Anders :)

Kim Andersen | 13. februar 2010 | 18:16

Godt at høre at det kan bruges Anders :)

Efterlad en kommentar

Du kan bruge disse tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>