各アイテムのデータを保持しながら重複を見つけてマージする

私は出力している solarWaterHeaterModels
というチャンネルからのエントリとしての給湯器モデルのリストを持っています。

私はすべてのモデル、カスタムフィールドで設定された1つ以上のカスタムデータ属性を持つそれぞれのドロップダウンを作成し、重複するタイトルを考慮する必要があります。

1回だけ表示される1つのモデルは、次のようになります。


しかし、いくつかのモデルが異なるカスタムフィールドデータで複数回表示されるのを見ると、
それらを1つのドロップダウンアイテムにマージし、それぞれからデータをループし、その内容のデータ属性を作成する必要があります。
また、単一の data-versions
属性をループインデックスでインクリメントします。

この結果…


ご覧のように、2番目にインクリメントされたデータモデル属性が表示されます。

私はTwigでこれをやってうれしいですが、ブランドごとに200以上のモデルが存在する可能性があるため、パフォーマンスが悪くなると思います。だから、もしあなたがそれがベストであると同意するならば、私はプラグインの解決法を探究したいと思う。私は本当に指導に感謝します。

どうもありがとう


UPDATE - Working template version, but very
slow... and even crashes the staging site when there are lots of
entries

私はそれがテンプレートで動作するように管理しましたが、それは痛いほど遅いです。いくつかのブランドは数百のエントリーを持っています。

{% set brand = craft.request.getParam('brand') %}

{% set criteria = craft.entries.section('solarWaterHeaterModels').order('title').search('brand:'~ brand).limit(null) %}

<!-- This is a custom plugin that queries the section directly -->
{% set models = craft.warehousesixQuery.source(criteria).find() %}

{% set data = [] %}
{% set merged = [] %}

{% for model in models %}
    {% if model.title in data %}
        {% set merged = merged|merge([model]) %}
    {% endif %}
    {% set data = data|merge([model.title]) %}
{% endfor %}

{% set isDefined = [] %}

{% for model in models %}
    {% set model_title = model.title %}

    {% if model.title|length %}
        {% if model.title not in isDefined %}
                {% set mergedIndex = 0 %}
                
        {% endif %}
    {% else %}
        
    {% endif %}

    {% set isDefined = isDefined|merge([model.title]) %}

{% endfor %}
ベストアンサー
申し訳ありませんが、適切な答えはありません

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です