【问题标题】:Kentico - Hierarchical Viewer - Different Transformations for Different MenuClassKentico - 分层查看器 - 不同 MenuClass 的不同转换
【发布时间】:2018-01-30 23:20:12
【问题描述】:

我使用 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;
#%} 

【问题讨论】:

    标签: kentico


    【解决方案1】:

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

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

    【讨论】:

    • 我切换到使用第一个和最后一个项目转换作为您的建议,现在一切正常!谢谢!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我首先要检查的是HTMLEncode(DocumentMenuClass)HTMLEncode(DocumentMenuClass).Contains("menu-large") 调用的输出。这可能会让您知道为什么没有得到预期的结果。

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

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

      您也可以尝试重写您的宏而不像文档中的大多数示例那样使用 return 语句。

      【讨论】:

        【解决方案4】:

        您需要简单地使用三元运算符并将您的条件如下所示放入您的转换中。

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

        这应该可以按预期工作。

        乐于助人

        【讨论】:

        • 这在页眉或页脚中不起作用,因为在这些转换中都没有可用的页面上下文。
        • 是的,你是对的 Brenden,我刚刚恢复了正确的宏进行转换。
        猜你喜欢
        • 2017-02-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-23
        • 1970-01-01
        • 1970-01-01
        • 2017-03-18
        • 2015-06-12
        • 1970-01-01
        相关资源
        最近更新 更多