How to change a variable outside of a for loop? Scoping Issues
SOLVE
This question is extremely common; How do I use a counter in a variable that was created outside of a for loop. @Jsum did a good job answering that question here. I just wanted to expand on it and make this post more "searchable" by users trying to accomplish the same thing.
{# create the counter #} {% set counter = {'value': 1} %}
{# create a macro that will change the counter, when called #}
{% macro incrementDecrementCounter(valuechange) %}
{% set changingCounter = counter.update({'value': counter.value + valuechange}) %}
{% endmacro %}
{# the for...loop #}
{% for n in range(10) %}
{% if n % 3 == 0 %}
{# call the macro to update the counter #}
{{incrementDecrementCounter(-1)}}
{% else %}
{# call the macro to update the counter #}
{{incrementDecrementCounter(1)}}
{% endif %}
<p>The loop index is: {{n}}, while the counter is: {{counter.value}}</p>
{% endfor %}
Aug 16, 201911:34 AM - edited Aug 16, 201911:35 AM
Top Contributor | Platinum Partner
How to change a variable outside of a for loop? Scoping Issues
SOLVE
I didn't think of using a macro, that's a nice solution!
I found a hacky way to do something similar but different This was some code I used to build a dictionary: The ‘.append’ function actually appends to the global dictionary ‘vars’, the variable inside the set is irrelevant but is needed for the hubl to run
{% set vars = [] %}
{% for item in group %}
{% set thisVariableDoesntDoAnything = vars.append(item.variable) %}
{% endfor %}
Matthew Scott Head of Development | Hubspot Solutions Architect
B2B marketing agency: Specialist B2B content marketing and demand generation for SaaS vendors and HubSpot Users | Deeply Digital | HubSpot Partner since 2010
How to change a variable outside of a for loop? Scoping Issues
SOLVE
Since writting the above I found the "do" function and hubspot have now added the "do" function to the docs so the code doesn't seem so hacky
{% set vars = [] %}
{% for item in group %}
{% do vars.append(item.variable) %}
{% endfor %}
Matthew Scott Head of Development | Hubspot Solutions Architect
B2B marketing agency: Specialist B2B content marketing and demand generation for SaaS vendors and HubSpot Users | Deeply Digital | HubSpot Partner since 2010