我使用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;
#%}
答案 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'>" %}
这应该按预期工作。
乐意帮助