Craft/Twig 如何循环多个 key/value 对并从该循环中删除重复项?
Craft/Twig How to loop multiple key/value pairs and remove duplicates from that loop?
在 Craft CMS 中,我有 child 个条目,其中每个 child 都有一个分配了 "city" 和 "country" 值的位置。
我希望输出 "City, Country" 文本列表,但删除任何重复项,因为两个或更多 children 可能共享相同的 "city,country" 对。
重要的是我可以分别引用每个 child 的城市和国家/地区值,因为我需要使用国家/地区值来显示列表中每个 child 项目的标志。
我已经了解并尝试了 "twig hash" 和 "associative arrays" 并找到了可用的片段,但无法使它们一起用于我的案例。
这不起作用:
{% set children = entry.children %}
{% set locations = {} %}
{% for child in children %}
{% set city = child.location.parts.locality %}
{% set country = child.location.parts.country %}
{% if city not in locations %}
{% set locations = locations|merge({ city : country }) %}
{% endif %}
{% endfor %}
{% for location in locations %}
{% for k, v in location %}
{{ k }}, {{ v }} <br />
{% endfor %}
{% endfor %}
如果你想让 city
成为数组的键,你需要将它们用括号括起来,这样变量就会被 twig
解释。
另外你不需要双 for
循环,你正在构建一个一维数组
{% set locations = {} %}
{% for child in children %}
{% set city = child.city %}
{% set country = child.country %}
{% if city not in locations %}
{% set locations = locations|merge({ (city) : country }) %}
{% endif %}
{% endfor %}
{% for k,v in locations %}
{{ k }}, {{ v }} <br />
{% endfor %}
在 Craft CMS 中,我有 child 个条目,其中每个 child 都有一个分配了 "city" 和 "country" 值的位置。
我希望输出 "City, Country" 文本列表,但删除任何重复项,因为两个或更多 children 可能共享相同的 "city,country" 对。
重要的是我可以分别引用每个 child 的城市和国家/地区值,因为我需要使用国家/地区值来显示列表中每个 child 项目的标志。
我已经了解并尝试了 "twig hash" 和 "associative arrays" 并找到了可用的片段,但无法使它们一起用于我的案例。
这不起作用:
{% set children = entry.children %}
{% set locations = {} %}
{% for child in children %}
{% set city = child.location.parts.locality %}
{% set country = child.location.parts.country %}
{% if city not in locations %}
{% set locations = locations|merge({ city : country }) %}
{% endif %}
{% endfor %}
{% for location in locations %}
{% for k, v in location %}
{{ k }}, {{ v }} <br />
{% endfor %}
{% endfor %}
如果你想让 city
成为数组的键,你需要将它们用括号括起来,这样变量就会被 twig
解释。
另外你不需要双 for
循环,你正在构建一个一维数组
{% set locations = {} %}
{% for child in children %}
{% set city = child.city %}
{% set country = child.country %}
{% if city not in locations %}
{% set locations = locations|merge({ (city) : country }) %}
{% endif %}
{% endfor %}
{% for k,v in locations %}
{{ k }}, {{ v }} <br />
{% endfor %}