在 #if() #elseif() 语句中使用 #set() 指令



我正在尝试向电子邮件添加动态内容,并希望从电子邮件正文中删除速度语法,并使用 #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" )

您错过了正确的形式表示法语法,它是:

${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

最后但并非最不重要的一点是,如果$foo为 null为空,则#if($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

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

#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

最新更新