Anvend Canvas redigering i Umbraco selvom du bruger XSLT
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.
Hej Kim, interessant artikkel selvom jeg ikke selv har prøvet
Michael Østergaard | 17. januar 2010 | 21:29Hej 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:16XSLT 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:42Tak for linkene, så har jeg noget at at komme igang med 😀
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:12Hej 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:16Godt at høre at det kan bruges Anders 🙂
Hej Kim, tak for et kanon indlæg, er dog selv
Marielyst | 14. juni 2010 | 22:10Hej Kim, tak for et kanon indlæg, er dog selv ikke super glad for umbraco 🙂
Någon som har några bra länkar nybörjarguider för Umbraco? Tack!
Fotbolls Odds | 29. juni 2011 | 22:42Någon som har några bra länkar nybörjarguider för Umbraco? Tack!
Hej. Jeg ville helt sikkert tage et kig på Umbraco
Kim Andersen | 3. juli 2011 | 00:03Hej. Jeg ville helt sikkert tage et kig på Umbraco User’s Guide. En helt ny bog som omhandler Umbraco. En god investering for alle som vil lære Umbraco.
Tack för tipset om umbraco kim! Jag har också letat
Öar i thailand | 4. juli 2011 | 20:39Tack för tipset om umbraco kim! Jag har också letat efter en bra guide som handlar om umbraco!