Search code examples
kentico

If no value then remove space in email notification


Currently i am using one email notification for form where i have around twenty attendees.I used these value to show in email notification.Below is my code:

{% AttendeeFirstName %} {% AttendeeLastName %}
{% AttendeeFirstName2 %} {% AttendeeLastName2 %}
{% AttendeeFirstName3 %} {% AttendeeLastName3 %}
{% AttendeeFirstName4 %} {% AttendeeLastName4 %}
{% AttendeeFirstName5 %} {% AttendeeLastName5 %}
{% AttendeeFirstName6 %} {% AttendeeLastName6 %}
{% AttendeeFirstName7 %} {% AttendeeLastName7 %}
{% AttendeeFirstName8 %} {% AttendeeLastName8 %}
{% AttendeeFirstName9 %} {% AttendeeLastName9 %}
{% AttendeeFirstName10 %} {% AttendeeLastName10 %}
{% AttendeeFirstName11 %} {% AttendeeLastName11 %}
{% AttendeeFirstName12 %} {% AttendeeLastName12 %}
{% AttendeeFirstName13 %} {% AttendeeLastName13 %}
{% AttendeeFirstName14 %} {% AttendeeLastName14 %}
{% AttendeeFirstName15 %} {% AttendeeLastName15 %}
{% AttendeeFirstName16 %} {% AttendeeLastName16 %}
{% AttendeeFirstName17 %} {% AttendeeLastName17 %}
{% AttendeeFirstName18 %} {% AttendeeLastName18 %}
{% AttendeeFirstName19 %} {% AttendeeLastName19 %}

In the above it is working fine if value is present any of the attendees, But here one issue is if user used some two attendees so two attendees is showing but for other 18 it is showing big blank space then after that whatever field used that is showing. How can i remove this space if no value present for that attendees from email notification.

   In the below code i used as for loop but not getting the value.

 {% size = GroupSize;attName="";j=0;for(i=0; i < size; i++){if(j==0){attName+=AttendeeFirstName+ " "+AttendeeLastName}else if(j>0){
    attName+=AttendeeFirstName+j+ " "+AttendeeLastName+j}j+=1;}; attName#%}

Below is the code used as suggested by rocky:

Additional Attendees:
{% att1 = AttendeeFirstName + " " + AttendeeLastName; if(att1 != " ") { return att1; } else { return ""; } #%}
{% att2 = AttendeeFirstName1 + " " + AttendeeLastName1; if(att2 != " ") { return att2; } else { return ""; } #%}
{% att3 = AttendeeFirstName2 + " " + AttendeeLastName2; if(att3 != " ") { return att3; } else { return ""; } #%}
{% att4 = AttendeeFirstName3 + " " + AttendeeLastName3; if(att4 != " ") { return att4; } else { return ""; } #%}

In the above code if we use FirstName only then for others code there is some space in email notification.


Solution

  • I guess the big blank space is caused by the space between the brackets: %} {%

    Advice no. 1: You don't have to use separate the code blocks.

    {% AttendeeFirstName + " " + AttendeeLastName %}
    

    Advice no. 2: Use conditions.

    {% 
    list = "";
    br = "<br />";
    att1 = AttendeeFirstName + " " + AttendeeLastName; if(att1 != " ") { list += att1+br; }  
    att2 = AttendeeFirstName1 + " " + AttendeeLastName1; if(att2 != " ") { list += att2+br; }   
    att3 = AttendeeFirstName2 + " " + AttendeeLastName2; if(att3 != " ") { list += att3+br; }  
    att4 = AttendeeFirstName3 + " " + AttendeeLastName3; if(att4 != " ") { list += att4; }  
    return list; #%}
    

    Advice no. 3: Use loops. I don't know how you store your data but it'd be much cleaner to iterate through a collection instead of hard-coding all twenty attendees.

    Advice no. 4: Have a look at the macro syntax documentation, especially conditions and loops.