メタフィールド 出力の並び順を変えたい。

AI-generated summary

  • 主題: Shopifyのメタフィールド(同一ネームスペースdetails)の出力順を任意に変更したい。
  • 現状: Liquidでproduct.metafields.detailsをループしキーと値を出力すると、LINING → MATERIAL の順になる。希望は MATERIAL → LINING。アルファベット順に出力されている可能性が示唆されたが未確認。
  • 提案: 配列用のsortフィルタで並べ替える案が出たが、実運用では機能せず。代わりに material や lining などキーを明示指定して順序通りに出力する方法が提案された(コード例あり)。
  • 追加事情: 同一ネームスペース内に複数のキーがあり、汎用的なソートで順番制御したいニーズがある。
  • 結論/対応: 汎用的な並べ替え手段は見つからず、今回は諦めるとの判断。キー明示での出力が現実的な回避策として提示された。
  • 状態: 未解決。メタフィールドの汎用ソート可否について明確な解答は得られず。コードスニペットが理解に重要。

お世話になります。

メタフィールドの出力される並び順についてご質問です。

同じネームスペースに属するキーと値を出力したのですが、出力される並び順を変える方法がわかりません。

Shopify純正のメタフィールド で作成してます。

{% assign details = product.metafields.details %}

<dl>
  {% for detail in details %}
  <dt>{{ detail | first | upcase }} : </dt>
  <dd>{{ detail | last }}</dd>
  {% endfor %}
</dl>

メタフィールド は同じネームスペース『details』で各キーは『material』と『lining』で作成しておりまして、

上記コードで出力すると

LINING : 100% POLYESTER

MATERIAL : HORSE LEATHER

の順番で出力されます。

ですが、やりたい事は

MATERIAL : HORSE LEATHER

LINING : 100% POLYESTER

の順番にしたいのですが、いろいろ検索したのですが方法がわかりませんでした。

どうやらアルファベット順に出力されるのかとは思っているのですが、、、

カスタムフィールドで出力したものは順番を変えることができないのでしょうか?

何か良い方法がございましたら、ご教示いただけますと幸いです。

何卒宜しくお願い致します。

試していないので動くかわかりませんが、sort filterが使えるかもしれません。

https://shopify.dev/api/liquid/filters/array-filters#sort

ただ、ソートを使うのではなく最初からキーを指定して出力した方が良いように思います。

<dl>
  <dt>{{ product.metafields.details.material }} : </dt>
  <dd>{{ product.metafields.details.lining }}</dd>
</dl>

返信遅くなってすいません。

ありがとうございます。

試していないので動くかわかりませんが、sort filterが使えるかもしれません。

https://shopify.dev/api/liquid/filters/array-filters#sort

この方法では出来ませんでした。

ただ、ソートを使うのではなく最初からキーを指定して出力した方が良いように思います。

こちらの方法ですが、上記以外にも同じネームスペースで複数のキーがあるモノを作成していたので、

何かソートする方法はないかと思ったのですが、今回は諦めます。

ありがとうございました。