You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja模板groupby分组后按数组索引而非字母顺序排序问题

解决方案

Twig 内置的 groupby 过滤器默认会对分组键按照字母顺序自动排序,没有内置参数可以直接关闭这个特性,要保留原数组中标题首次出现的顺序,手动实现分组逻辑即可,修改后的代码如下:

{% set list = widget.attributes.faq_item %}
{# 分别存储分组的顺序、分组对应的内容列表 #}
{% set group_order = [] %}
{% set grouped_data = {} %}

{% for item in list %}
    {% set current_title = item.value.main_title %}
    {# 遇到首次出现的标题就新增到分组顺序列表,同时初始化对应分组 #}
    {% if current_title not in group_order %}
        {% set group_order = group_order|merge([current_title]) %}
        {% set grouped_data = grouped_data|merge({(current_title): []}) %}
    {% endif %}
    {# 将当前项推入对应标题的分组中 #}
    {% set grouped_data = grouped_data|merge({(current_title): grouped_data[current_title]|merge([item])}) %}
{% endfor %}

{# 按原始数组的标题顺序输出分组内容 #}
{% for title in group_order %}
  <h2 class="account-sss__title">{{title}}</h2>

  {% for item in grouped_data[title] %}
    <a href="#" class="account-sss__list--link js-link">
        {{item.value.question}}
    </a>
    <div class="account-sss__content js-account-sss__content">
        {{item.value.answer}}
    </div>
  {% endfor %}
{% endfor %}

这个方案不需要依赖任何额外的Twig扩展,完全按照原始数组中标题第一次出现的顺序排列分组,不会触发默认的字母排序逻辑,适配绝大多数Twig运行环境。

内容的提问来源于stack exchange,提问作者ugurK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:45:05