Using HubL (as I'm building a module in HubSpot), I have two arrays:
topics
: Which is a list of topics.all_tags
: Which is an array of all the blog tags in the system.
If I dump out these arrays, this is what it will return:
{{ topics }}
prints the following:[Data, Accounting, Insight]
{{ all_tags }}
prints the following:[Accounting, Press, Data]
So essentially, {{ topics }}
has a tag ("Insight") that doesn't exist in the system yet.
What I'm trying to do is to create a third array, which will contain matching results from the two above arrays. For example, topics_final
, once returned, should print [Data, Accounting]
.
But, when printing {{ topics_final }}
, the array is empty.
What I've tried:
<!-- this gets all tags -->
{% set all_tags = blog_topics( blog_id , 250) %}
<!-- create arrays -->
{% set topics = [] %}
{% set topics_final = [] %}
<!-- append topic data to the array -->
{% for item in module.add_topics.topics %}
{% set topic_option = item|striptags %}
{% do topics.append( topic_option ) %}
{% endfor %}
<!-- check if topic tags exists in HubSpot -->
{% for topics in all_tags %}
{% if topics in all_tags %}
{{ topics }}
<!-- results with above
Data, Accounting, Insight
-->
{% else %}
else
{% endif %}
{% endfor %}
With the above, it just prints out the {{ topics }}
, even though Insight
isn't in the all_tags
array.
Note: Tagging Jinja2
as the syntax is similar
A combination of the filter
reject
and the built in testin
could help you achieve this.Sadly, it seems the
reject
filter does not accept negating a test, still, you can reject all the elements oftopics
that are not inall_tags
then reject the said elements from thetopics
list.So that ends with:
Switch yields: