【问题标题】:Is there a way to compare two macros in Kentico?有没有办法比较 Kentico 中的两个宏?
【发布时间】:2011-06-01 15:08:32
【问题描述】:

我有一条免责声明消息,我只希望在所查看的页面尚未翻译成为该网站选择的语言时才显示该消息。

我正在为免责声明消息使用静态文本 webpart,并尝试根据页面的文化 {%cmscontext.currentdocumentculture.culturecode%} 设置其可见性,而不是等于所选的视图文化 {%currentculture%}。

我试过了:{%cmscontext.currentdocumentculture.culturecode|(notequals){(1)%currentculture%(1)}%}

但是无论选择什么文化,这都会被解析为真。有什么想法吗?

【问题讨论】:

    标签: macros content-management-system culture kentico


    【解决方案1】:

    depends on what version of Kentico you are using

    如果您使用的是 5.5+,you have the option to use Nested Macros。以下是 Martin Hejtmanek 的一句话:

    如果你使用过一些更复杂的宏,你知道你可以使用这样的东西:

    {%DocumentName|(equals)Home|(truevalue){?param?}%} 但是你不能在 5.0 中做这样的事情:

    {%DocumentName|(equals)Home|(truevalue){%param%}%}

    区别在于宏的类型。出于性能原因(更快的处理),我们不允许嵌套相同类型的宏,因此我们可以使宏正则表达式尽可能简单。

    在 5.5 中,有一个选项可以解决这个问题。我们提供使用耦合括号来允许嵌套相同类型的宏,一个例子最好地说明了这一点:

    {%DocumentName|(equals)Home|(truevalue){(1)%param%(1)}%}

    你所做的是你可以在宏括号和类型字符之间放一个数字,这样你可以更容易地看到你的表达式的结尾在哪里,也可以让引擎正确地看到它。这个数字没有任何信息价值,它只是一个检测匹配的数字。它可以是任何非负整数。

    因此,以前,您可以嵌套不同类型的宏 - 例如:您可以将 Path 宏嵌套在 Expression 宏中。但现在在 5.5 版中,您可以嵌套相同类型的宏。

    干杯, 兰斯

    【讨论】:

    • 感谢兰斯的回复。我实际上在我的示例中使用了嵌套宏,但我最近从 Kentico 得到了答案。显然,您不能使用 equals 或 notequals 比较两个宏,因为对于这种情况,宏解析得太晚了。
    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多