【问题标题】:Using the #set() directive in an #if() #elseif() statement在 #if() #elseif() 语句中使用 #set() 指令
【发布时间】:2019-08-14 19:56:17
【问题描述】:

我正在尝试向电子邮件添加动态内容,并希望从电子邮件正文中删除速度语法,并使用如下 #set 指令将其替换为 $var:

#if('x' = 'y') #set($z = 'z') #elseif( 'a' = 'b') #set($c = 'c')

这是我的尝试:

 #if( {$date_opened_5ca62c21c455a} == "" && {$firstName} != "" )
 #set($header_greeting = "{$firstName}, Community Member.")
 #elseif( {$date_opened_5ca62c21c455a} != "" && {$firstName} != "" )
 #set( $header_greeting = "{$firstName}, member since 
 {$date_opened_5ca62c21c455a}")
 #else
 #set( $header_greeting = "Building Tomorrow Together" )
 #end

我收到一个错误,说应该结束)

我还在黑暗中拍了一张照片:

 #set( $header_greeting = "#if( {$date_opened_5ca62c21c455a} == "" && {$firstName} != "" ){$firstName}, Community Member.#{elseif({$date_opened_5ca62c21c455a} != "" && {$firstName} != "")}{$firstName}, member since {$date_opened_5ca62c21c455a}#{else}Building Tomorrow Together#end" )

【问题讨论】:

    标签: velocity sharpspring


    【解决方案1】:

    你错过了正确的正式符号语法,它是:

    ${foo}
    

    而不是

    {$foo}
    

    但作为旁注,您似乎不需要示例中的正式符号,因为它仅用于模棱两可的情况,也就是。 $foo.bar 反对 ${foo}.bar

    另外,您的第一个示例使用 = 而不是 == 来表示相等。

    除其他事项外,您还必须验证缺失值是否为空字符串,而不仅仅是缺失值。 $foo 呈现为 $foo 而不是空字符串(如果缺少值)。要检查 null 或空,您可以使用静默符号:

    #if("$!foo" == "") ...
    

    有了所有这些评论,您的尝试可以重写为:

    #if( "$!date_opened_5ca62c21c455a" == "" && "$!firstName" != "" )
      #set( $header_greeting = "$firstName, Community Member." )
    #elseif( "$!date_opened_5ca62c21c455a" != "" && "$!firstName" != "" )
      #set( $header_greeting = "$firstName, member since $date_opened_5ca62c21c455a" )
    #else
      #set( $header_greeting = "Building Tomorrow Together" )   
    #end
    

    最后但同样重要的是,#if($foo) 的默认行为是如果$foo 为空为空,则返回 false,因此您可以这样写:

    #if( !$date_opened_5ca62c21c455a && $firstName )
      #set( $header_greeting = "$firstName, Community Member." )
    #elseif( $date_opened_5ca62c21c455a && $firstName )
      #set( $header_greeting = "$firstName, member since $date_opened_5ca62c21c455a" )
    #else
      #set( $header_greeting = "Building Tomorrow Together" )   
    #end
    

    【讨论】:

    • 感谢 Claude 的回复,这些值({$date_opened_5ca62c21c455a} 和 {$firstName})是 SharpSpring 中的合并标签(lead field vales)。我能够通过使用带有合并标签的字符串连接而不是在引号内使用它们来使其工作。
    【解决方案2】:

    这是使用 SharpSpring crm 中的速度脚本使用 set() 指令获取合并标签的解决方案。问题是在字符串中使用合并标签而不是与它连接。

    #if( {$date_opened_5ca62c21c455a} == "" && {$firstName} != "" )
    
    #set( $headerGreeting = {$firstName} + ", Community Member." )
    
    #elseif( {$date_opened_5ca62c21c455a} != "" && {$firstName} != "" )
    
    #set( $headerGreeting = {$firstName} + ", member since " + {$date_opened_5ca62c21c455a} )
    
    #else
    
    #set( $headerGreeting = "Building Tomorrow Together" )
    
    #end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      相关资源
      最近更新 更多