Kentico - 分层查看器 - 针对不同MenuClass的不同转换

时间:2018-01-30 06:10:04

标签: kentico

我使用Hierarchical Viewer来构建菜单。我想要实现但不知道如何在页眉和页脚转换中执行If语句:如果菜单类包含“menu-large”,则显示abc,如果没有则显示xyz,如下所示。我的转换是文本/ XML。谢谢你的帮助!

{% 
result = "<ul class=\"dropdown-menu\">"; // default value
if(HTMLEncode(DocumentMenuClass).Contains("menu-large")) {result ="<ul class=\"dropdown-menu megamenu\"><div class=\"container megamenu-container\"><div class=\"row\">"}  
return result;
#%} 

4 个答案:

答案 0 :(得分:2)

页眉和页脚没有任何页面的上下文,因此您无法看到菜单css字段。

你想要使用第一个项目转换类型,它应该在它的第一个级别上触发。

答案 1 :(得分:1)

正如Trevor所说,页眉/页脚转换不代表文档,它们只是在项目转换之前/之后显示(代表文档)。

如果您正在使用项目转换来显示菜单项的父项,则可以使用Prashant的代码在那里获取DocumentMenuClass值。

答案 2 :(得分:0)

我要检查的第一件事是HTMLEncode(DocumentMenuClass)HTMLEncode(DocumentMenuClass).Contains("menu-large")来电的输出。这可能会让您知道为什么没有得到预期的结果。

您的宏看起来正确,但您也可以尝试this

  

定义条件或循环时,可以离开主体   循环/条件打开并稍后在另一个宏表达式中关闭它。   这允许您将命令应用于文本内容或HTML代码   置于宏表达式之间。打开命令即可   在基于宏的转换或各种类型的转换中特别有用   HTML模板。

此外,您可以尝试重写宏而不使用return语句,就像文档中的大多数示例一样。

答案 3 :(得分:-1)

您需要简单地使用三元运算符,并将您的条件放在转换中。

{% HTMLEncode(DocumentMenuClass).Contains("menu-large") ? "<ul class='dropdown-menu megamenu'><div class='container megamenu-container'><div class='row'>" : "<ul class='dropdown-menu'>" %}

这应该按预期工作。

乐意帮助