Sla navigatie over

Umbraco - van XSLT naar Razor

Tot op heden werd het Umbraco CMS aangestuurd door XML welke d.m.v. XSLT omgevormd werd tot HTML. Vanaf versie 4.7 is het echter mogelijk om de omvorming naar HTML te laten gebeuren d.m.v. de Razor techniek. Aangezien deze techniek een kortere syntax heeft dan XSLT en daarnaast eigenlijk gewoon C# is zullen programmeurs hier vrolijk van worden. Het probleem is/was namelijk dat XSLT een niet gangbare syntax heeft waardoor de gemiddelde programmeur er niet altijd even vrolijk van werd.

Met Razor wordt de syntax om iets te bereiken veel korter dan wanneer hetzelfde bereikt moet worden d.m.v. XSLT. Doordat de code cleaner/korter is dan XSLT zullen Umbraco websites welke d.m.v. Razor aangestuurd worden beter te onderhouden zijn dan een Umbraco website aangestuurd d.m.v. XSLT.

Hieronder vindt u de meest gangbare Razor code om iets te bereiken in Umbraco:

Csharp

Kinderen van huidige pagina inclusief maximum

@{ var numberOfItems = 10; }
    @foreach (var item in @Model.Children.Where("umbracoNaviHide != true").Take(numberOfItems).OrderBy("UpdateDate")) {
  • @item.Name
  • }

Breadcrumbs

    @foreach(var level in @Model.Ancestors().Where("umbracoNaviHide != true")) {
  • @level.Name
  • }
  • @Model.Name

Afbeelding met check

@if (!String.IsNullOrEmpty(@Model.Media("contentImage","umbracoFile")))
{
  @Model.Name
}

Menu

    @{ var level = 2; var currentMenu = @Model.AncestorOrSelf(@level); foreach(var page in @Model.AncestorOrSelf(@level-1).Children.Where("showPageInMainMenu")) { @page.Name
  • @page.Name
  • } }

Sitemap

@helper traverse(dynamic node){
var maxLevelForSitemap = 4;

var values = new Dictionary();
values.Add("maxLevelForSitemap", maxLevelForSitemap) ;

   var items = node.Children.Where("Level <= maxLevelForSitemap", values);
   
    @foreach (var item in items) {
  • @item.Name @traverse(item)
  • }
}
@traverse(@Model.AncestorOrSelf())

Related links

@if (Model.Links.Count() != 0)
{
    
    @foreach(var item in Model.Links) { var target = item.newwindow == "1" ? "target=\"_blank\"" : "";
  • @* The href is built differently for internal and external links *@ @{ string type = item.type; switch (type) { case "internal": @item.title break; case "external": @item.title break; } }
  • }
}
 

Gerelateerde onderwerpen:

Umbraco