Velocity Script tokens behave unexpectedly

Anonymous
Not applicable

Velocity Script tokens behave unexpectedly

I am trying to insert script tokens into an email template.

The ZillowOpen script is:

#set($zHideOpen = "")

##check if the field is null

#if(${lead.zillow}.isEmpty())

#set($zHideOpen = "<!--")

#end

${zHideOpen}

And ZillowClose:

#set($zHideClose = "")

##check if the field is null

#if(${lead.zillow}.isEmpty())

#set($zHideClose = "-->")

#end

${zHideClose}

This intent is to comment out HTML if the link isn't available.

However, the results are:

Screen Shot 2018-04-05 at 2.57.34 PM.png

Which is strange because the token is appearing in the email above the table and it's below in the HTML. This didn't help either. https://nation.marketo.com/message/180834-re-token-wont-populate-keeps-appearing-as-text#comment-180...

</table>{{my.ZillowOpen}}

                                    <table mktoName="mkto" class="mktoModule" id="Features3Colf6c43dde-6ec2-4b72-87f8-4a2c67c6e77a9c2fbeb5-a151-4aff-a4c1-9a263dc62f65949d6569-c90f-4f14-a99d-273eb8da091f" style="-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: collapse;" align="center" border="0" cellpadding="0" cellspacing="0" width="100%">

                                        <tbody>

                                            <tr>

                                                <td valign="top" bgcolor="#FFFFFF">

                                                    <table class="inner_table" width="600" align="center" cellpadding="0" cellspacing="0" style="width:600px; margin: 0 auto; border-collapse: collapse;">

                                                        <!--Extra space-->

                                                        <tbody>

                                                            <tr>

                                                                <td height="20" colspan="5" style="line-height: 1px; font-size: 1px;"> </td>

                                                            </tr>

                                                            <tr>

                                                             <td class="block" valign="top" width="190">

                                                                    <table cellpadding="0" cellspacing="0" border="0" align="center" width="100%" style="width: 100%; border-collapse: collapse;">

                                                                        <tbody>

                                                                            <tr>

                                                                                <!--image-width:125px;height:125px-->

                                                                                <td class="padding_top" style="text-align:center;" valign="top">

                                                                                    <div mktoName="mkto" id="Features3ColRImgf6c43dde-6ec2-4b72-87f8-4a2c67c6e77a6c4094f2-8082-4a1e-aea7-b65cce461f2c" class="mktoImg" mktolockimgsize="true">

                                                                                        <a href="http://{{lead.zillow}}" target="_blank"><img src="http://XXX.marketo.com/rs/XXX/images/zillow.jpg" width="125" style="" /></a>

                                                                                    </div>

                                                                                </td>

                                                                            </tr>

                                                                            <!--Extra space-->

                                                                            <tr>

                                                                                <td height="20" style="line-height: 1px; font-size: 1px;"> </td>

                                                                            </tr>

                                                                            <tr>

                                                                                <td valign="top">

                                                                                    <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100%; border-collapse: collapse;">

                                                                                        <tbody>

                                                                                            <tr>

                                                                                                <td valign="top" style="font-size:14px; color:#000000; font-family:Arial,Helvetica,sans-serif; mso-line-height-rule: exactly; line-height:20px;text-align:center;">

                                                                                                    <div mktoName="mkto" class="mktoText" id="Features3ColRDescf6c43dde-6ec2-4b72-87f8-4a2c67c6e77a6c4094f2-8082-4a1e-aea7-b65cce461f2c">

                                                                                                        <p><span style="color: #222222; font-family: Roboto, arial, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;

text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;" mce-data-marked="1"><strong>

  <a href="http://{{lead.zillow}}" target="_blank">Zillow</a>

</strong></span><span style="color: #222222; font-family: Roboto, arial, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left;

text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"> is a real estate and rental marketplace dedicated to empowering consumers with data, inspiration, and knowledge.</span>

                                                                                                            <br />

                                                                                                        </p>

                                                                                                    </div>

                                                                                                </td>

                                                                                            </tr>

                                                                                        </tbody>

                                                                                    </table>

                                                                                </td>

                                                                            </tr>

                                                                        </tbody>

                                                                    </table>

                                                                </td>{{my.ZillowClose}}

2 REPLIES 2
SanfordWhiteman
Level 10 - Community Moderator

Re: Velocity Script tokens behave unexpectedly

Your syntax is off -- you can't chain with formal references like that. (Remove {}.)

You want:

#if($lead.zillow.isEmpty())

etc.

SanfordWhiteman
Level 10 - Community Moderator

Re: Velocity Script tokens behave unexpectedly

Btw it's easy to blunder into this syntax error because Marketo's Script Editor, er, "helpfully" adds references with formal ${notation} when you drag fields from the tree pane to the editor pane.

In fact formal notation can't be used everywhere:

  • DON'T use it when calling functions
  • DO use it when outputting strings (i.e. on lines that only output email content)

Overusing formal notation, even when it luckily works, creates confusion because seemingly innocent changes can suddenly break Velocity parsing.

For example, this is OK:

#if( ${lead.zillow} == "" ) 

But if you decide to follow Java best practices (which you're already doing, which good) this breaks:

#if( ${lead.zillow}.isEmpty() ) 

If you haven't found it already you should read the posts at http://blog.teknkl.com/tag/velocity .